600
How can I display the currency only for not empty cells

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGrid
	LOCAL oItems

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGrid := XbpActiveXControl():new( oForm:drawingArea )
	oGrid:CLSID  := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
	oGrid:create(,, {10,60},{610,370} )

		oGrid:Columns():Add("Number")
		oGrid:Columns():Add("Currency"):ComputedField := "len(%0) ? currency(dbl(%0)) : ''"
		oItems := oGrid:Items()
			oItems:AddItem("1.23")
			oItems:AddItem("2.34")
			oItems:AddItem("0")
			oItems:SetProperty("ItemBackColor",oItems:AddItem(),AutomationTranslateColor( GraMakeRGBColor  ( { 255,128,128 } )  , .F. ))
			oItems:AddItem("10000.99")

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
599
Is there a function to display the number of days between two date including the number of hours

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGrid
	LOCAL oItems
	LOCAL h

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGrid := XbpActiveXControl():new( oForm:drawingArea )
	oGrid:CLSID  := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
	oGrid:create(,, {10,60},{610,370} )

		oGrid:Columns():Add("Start"):Width := 32
		oGrid:Columns():Add("End")
		oGrid:Columns():Add("Duration"):ComputedField := "((1:=int(0:= (date(%1)-date(%0)))) != 0 ? (=:1 + ' day(s)') : '') + (=:1 ? ' ' : '' ) + ((1:=int(0:=((=:0 - =:1 + 1/24/60/60/2)*24))) != 0 ? =:1 + ' hour(s) ' : '' ) + ((1:=round((=:0 - =:1)*60)) != 0 ? =:1 + ' min(s)' : '')"
		oItems := oGrid:Items()
			h := oItems:AddItem("01/11/2001")
			oItems:SetProperty("CellValue",h,1,"01/14/2001")
			h := oItems:AddItem("02/22/2002 12:00:00")
			oItems:SetProperty("CellValue",h,1,"03/14/2002 13:00:00")
			h := oItems:AddItem("03/13/2003")
			oItems:SetProperty("CellValue",h,1,"04/11/2003 11:00:00")

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
598
Is there a function to display the number of days between two date including the number of hours

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGrid
	LOCAL oItems
	LOCAL h

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGrid := XbpActiveXControl():new( oForm:drawingArea )
	oGrid:CLSID  := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
	oGrid:create(,, {10,60},{610,370} )

		oGrid:Columns():Add("Start")
		oGrid:Columns():Add("End")
		oGrid:Columns():Add("Duration"):ComputedField := "" + CHR(34) + "D " + CHR(34) + " + int(date(%1)-date(%0)) + " + CHR(34) + " H " + CHR(34) + " + round(24*(date(%1)-date(%0) - floor(date(%1)-date(%0))))"
		oItems := oGrid:Items()
			h := oItems:AddItem("01/11/2001")
			oItems:SetProperty("CellValue",h,1,"01/14/2001 23:00:00")
			h := oItems:AddItem("02/22/2002 12:00:00")
			oItems:SetProperty("CellValue",h,1,"03/14/2002 13:00:00")
			h := oItems:AddItem("03/13/2003")
			oItems:SetProperty("CellValue",h,1,"04/11/2003 11:00:00")

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
597
How can I display the number of days between two dates

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGrid
	LOCAL oItems
	LOCAL h

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGrid := XbpActiveXControl():new( oForm:drawingArea )
	oGrid:CLSID  := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
	oGrid:create(,, {10,60},{610,370} )

		oGrid:Columns():Add("Start")
		oGrid:Columns():Add("End")
		oGrid:Columns():Add("Duration"):ComputedField := "(date(%1)-date(%0)) + ' days'"
		oItems := oGrid:Items()
			h := oItems:AddItem("01/11/2001")
			oItems:SetProperty("CellValue",h,1,"01/14/2001")
			h := oItems:AddItem("02/22/2002")
			oItems:SetProperty("CellValue",h,1,"03/14/2002")
			h := oItems:AddItem("03/13/2003")
			oItems:SetProperty("CellValue",h,1,"04/11/2003")

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
596
How can I get second part of the date

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGrid
	LOCAL oItems

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGrid := XbpActiveXControl():new( oForm:drawingArea )
	oGrid:CLSID  := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
	oGrid:create(,, {10,60},{610,370} )

		oGrid:Columns():Add("Date")
		oGrid:Columns():Add("Second"):ComputedField := "sec(date(%0))"
		oItems := oGrid:Items()
			oItems:AddItem("01/11/2001 10:10:00")
			oItems:AddItem("02/22/2002 11:01:22")
			oItems:AddItem("03/13/2003 12:23:01")
			oItems:AddItem("04/14/2004 13:11:59")

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
595
How can I get minute part of the date

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGrid
	LOCAL oItems

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGrid := XbpActiveXControl():new( oForm:drawingArea )
	oGrid:CLSID  := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
	oGrid:create(,, {10,60},{610,370} )

		oGrid:Columns():Add("Date")
		oGrid:Columns():Add("Minute"):ComputedField := "min(date(%0))"
		oItems := oGrid:Items()
			oItems:AddItem("01/11/2001 10:10:00")
			oItems:AddItem("02/22/2002 11:01:00")
			oItems:AddItem("03/13/2003 12:23:00")
			oItems:AddItem("04/14/2004 13:11:00")

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
594
How can I check the hour part only so I know it was afternoon

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGrid
	LOCAL oItems

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGrid := XbpActiveXControl():new( oForm:drawingArea )
	oGrid:CLSID  := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
	oGrid:create(,, {10,60},{610,370} )

		oGrid:ConditionalFormats():Add("hour(%0)>=12"):Bold := .T.
		oGrid:Columns():Add("Date")
		oGrid:Columns():Add("Hour"):ComputedField := "hour(%0)"
		oItems := oGrid:Items()
			oItems:AddItem("01/11/2001 10:00:00")
			oItems:AddItem("02/22/2002 11:00:00")
			oItems:AddItem("03/13/2003 12:00:00")
			oItems:AddItem("04/14/2004 13:00:00")

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
593
What about a function to get the day in the week, or days since Sunday

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGrid
	LOCAL oItems

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGrid := XbpActiveXControl():new( oForm:drawingArea )
	oGrid:CLSID  := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
	oGrid:create(,, {10,60},{610,370} )

		oGrid:Columns():Add("Date")
		oGrid:Columns():Add("WeekDay"):ComputedField := "weekday(%0)"
		oItems := oGrid:Items()
			oItems:AddItem("01/11/2001 10:00:00")
			oItems:AddItem("02/22/2002 11:00:00")
			oItems:AddItem("03/13/2003 12:00:00")
			oItems:AddItem("04/14/2004 13:00:00")

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
592
Is there any function to get the day of the year or number of days since January 1st

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGrid
	LOCAL oItems

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGrid := XbpActiveXControl():new( oForm:drawingArea )
	oGrid:CLSID  := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
	oGrid:create(,, {10,60},{610,370} )

		oGrid:Columns():Add("Date")
		oGrid:Columns():Add("Day since January 1st"):ComputedField := "yearday(%0)"
		oItems := oGrid:Items()
			oItems:AddItem("01/11/2001 10:00:00")
			oItems:AddItem("02/22/2002 11:00:00")
			oItems:AddItem("03/13/2003 12:00:00")
			oItems:AddItem("04/14/2004 13:00:00")

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
591
How can I display only the day of the date

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGrid
	LOCAL oItems

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGrid := XbpActiveXControl():new( oForm:drawingArea )
	oGrid:CLSID  := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
	oGrid:create(,, {10,60},{610,370} )

		oGrid:Columns():Add("Date")
		oGrid:Columns():Add("Day"):ComputedField := "day(%0)"
		oItems := oGrid:Items()
			oItems:AddItem("01/11/2001 10:00:00")
			oItems:AddItem("02/22/2002 11:00:00")
			oItems:AddItem("03/13/2003 12:00:00")
			oItems:AddItem("04/14/2004 13:00:00")

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
590
How can I display only the month of the date

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGrid
	LOCAL oItems

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGrid := XbpActiveXControl():new( oForm:drawingArea )
	oGrid:CLSID  := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
	oGrid:create(,, {10,60},{610,370} )

		oGrid:Columns():Add("Date")
		oGrid:Columns():Add("Month"):ComputedField := "month(%0)"
		oItems := oGrid:Items()
			oItems:AddItem("01/01/2001 10:00:00")
			oItems:AddItem("02/02/2002 11:00:00")
			oItems:AddItem("03/03/2003 12:00:00")
			oItems:AddItem("04/04/2004 13:00:00")

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
589
How can I get only the year part from a date expression

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGrid
	LOCAL oItems

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGrid := XbpActiveXControl():new( oForm:drawingArea )
	oGrid:CLSID  := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
	oGrid:create(,, {10,60},{610,370} )

		oGrid:Columns():Add("Date")
		oGrid:Columns():Add("Year"):ComputedField := "year(%0)"
		oItems := oGrid:Items()
			oItems:AddItem("01/01/2001 10:00:00")
			oItems:AddItem("02/02/2002 11:00:00")
			oItems:AddItem("03/03/2003 12:00:00")
			oItems:AddItem("04/04/2004 13:00:00")

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
588
Can I convert the expression to date

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGrid
	LOCAL oItems

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGrid := XbpActiveXControl():new( oForm:drawingArea )
	oGrid:CLSID  := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
	oGrid:create(,, {10,60},{610,370} )

		oGrid:Columns():Add("Number")
		oGrid:Columns():Add("Date"):ComputedField := "date(dbl(%0))"
		oItems := oGrid:Items()
			oItems:AddItem("-1.98")
			oItems:AddItem("30000.99")
			oItems:AddItem("3561.23")
			oItems:AddItem("1232.34")

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
587
Can I convert the expression to a number, double or float

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGrid
	LOCAL oItems

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGrid := XbpActiveXControl():new( oForm:drawingArea )
	oGrid:CLSID  := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
	oGrid:create(,, {10,60},{610,370} )

		oGrid:Columns():Add("Number")
		oGrid:Columns():Add("Number + 2"):ComputedField := "dbl(%0)+2"
		oItems := oGrid:Items()
			oItems:AddItem("-1.98")
			oItems:AddItem("0.99")
			oItems:AddItem("1.23")
			oItems:AddItem("2.34")

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
586
How can I display dates in long format

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGrid
	LOCAL oItems

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGrid := XbpActiveXControl():new( oForm:drawingArea )
	oGrid:CLSID  := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
	oGrid:create(,, {10,60},{610,370} )

		oGrid:Columns():Add("Date")
		oGrid:Columns():Add("LongFormat"):ComputedField := "longdate(%0)"
		oItems := oGrid:Items()
			oItems:AddItem("01/01/2001 10:00:00")
			oItems:AddItem("02/02/2002 11:00:00")
			oItems:AddItem("03/03/2003 12:00:00")
			oItems:AddItem("04/04/2004 13:00:00")

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
585
How can I display dates in short format

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGrid
	LOCAL oItems

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGrid := XbpActiveXControl():new( oForm:drawingArea )
	oGrid:CLSID  := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
	oGrid:create(,, {10,60},{610,370} )

		oGrid:Columns():Add("Date")
		oGrid:Columns():Add("ShortFormat"):ComputedField := "shortdate(%0)"
		oItems := oGrid:Items()
			oItems:AddItem("01/01/2001 10:00:00")
			oItems:AddItem("02/02/2002 11:00:00")
			oItems:AddItem("03/03/2003 12:00:00")
			oItems:AddItem("04/04/2004 13:00:00")

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
584
How can I display the time only of a date expression

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGrid
	LOCAL oItems

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGrid := XbpActiveXControl():new( oForm:drawingArea )
	oGrid:CLSID  := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
	oGrid:create(,, {10,60},{610,370} )

		oGrid:Columns():Add("Date")
		oGrid:Columns():Add("Time"):ComputedField := "'time is:' + time(date(%0))"
		oItems := oGrid:Items()
			oItems:AddItem("01/01/2001 10:00:00")
			oItems:AddItem("02/02/2002 11:00:00")
			oItems:AddItem("03/03/2003 12:00:00")
			oItems:AddItem("04/04/2004 13:00:00")

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
583
Is there any function to display currencies, or money formatted as in the control panel

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGrid
	LOCAL oItems

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGrid := XbpActiveXControl():new( oForm:drawingArea )
	oGrid:CLSID  := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
	oGrid:create(,, {10,60},{610,370} )

		oGrid:Columns():Add("Number")
		oGrid:Columns():Add("Currency"):ComputedField := "currency(dbl(%0))"
		oItems := oGrid:Items()
			oItems:AddItem("1.23")
			oItems:AddItem("2.34")
			oItems:AddItem("10000.99")

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
582
How can I convert the expression to a string so I can look into the date string expression for month's name

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGrid
	LOCAL oItems

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGrid := XbpActiveXControl():new( oForm:drawingArea )
	oGrid:CLSID  := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
	oGrid:create(,, {10,60},{610,370} )

		oGrid:Columns():Add("Number")
		oGrid:Columns():Add("Str"):ComputedField := "str(%0) + ' AA'"
		oItems := oGrid:Items()
			oItems:AddItem("-1.98")
			oItems:AddItem("0.99")
			oItems:AddItem("1.23")
			oItems:AddItem("2.34")

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
581
Can I display the absolute value or positive part of the number

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGrid
	LOCAL oItems

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGrid := XbpActiveXControl():new( oForm:drawingArea )
	oGrid:CLSID  := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
	oGrid:create(,, {10,60},{610,370} )

		oGrid:Columns():Add("Number")
		oGrid:Columns():Add("Abs"):ComputedField := "abs(%0)"
		oItems := oGrid:Items()
			oItems:AddItem("-1.98")
			oItems:AddItem("0.99")
			oItems:AddItem("1.23")
			oItems:AddItem("2.34")

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
580
Is there any function to get largest number with no fraction part that is not greater than the value

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGrid
	LOCAL oItems

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGrid := XbpActiveXControl():new( oForm:drawingArea )
	oGrid:CLSID  := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
	oGrid:create(,, {10,60},{610,370} )

		oGrid:Columns():Add("Number")
		oGrid:Columns():Add("Floor"):ComputedField := "floor(%0)"
		oItems := oGrid:Items()
			oItems:AddItem("-1.98")
			oItems:AddItem("0.99")
			oItems:AddItem("1.23")
			oItems:AddItem("2.34")

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
579
Is there any function to round the values base on the .5 value

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGrid
	LOCAL oItems

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGrid := XbpActiveXControl():new( oForm:drawingArea )
	oGrid:CLSID  := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
	oGrid:create(,, {10,60},{610,370} )

		oGrid:Columns():Add("Number")
		oGrid:Columns():Add("Round"):ComputedField := "round(%0)"
		oItems := oGrid:Items()
			oItems:AddItem("-1.98")
			oItems:AddItem("0.99")
			oItems:AddItem("1.23")
			oItems:AddItem("2.34")

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
578
How can I get or display the integer part of the cell

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGrid
	LOCAL oItems

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGrid := XbpActiveXControl():new( oForm:drawingArea )
	oGrid:CLSID  := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
	oGrid:create(,, {10,60},{610,370} )

		oGrid:Columns():Add("Number")
		oGrid:Columns():Add("Int"):ComputedField := "int(%0)"
		oItems := oGrid:Items()
			oItems:AddItem("-1.98")
			oItems:AddItem("0.99")
			oItems:AddItem("1.23")
			oItems:AddItem("2.34")

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
577
How can I display names as proper ( first leter of the word must be in uppercase, and the rest in lowercase )

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGrid
	LOCAL oItems
	LOCAL h

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGrid := XbpActiveXControl():new( oForm:drawingArea )
	oGrid:CLSID  := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
	oGrid:create(,, {10,60},{610,370} )

		oGrid:Columns():Add(""):FormatColumn := "proper(%0)"
		oItems := oGrid:Items()
			h := oItems:AddItem("root")
			oItems:InsertItem(h,,"child child")
			oItems:InsertItem(h,,"child child")
			oItems:InsertItem(h,,"child child")
			oItems:SetProperty("ExpandItem",h,.T.)

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
576
Is there any option to display cells in uppercase

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGrid
	LOCAL oItems
	LOCAL h

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGrid := XbpActiveXControl():new( oForm:drawingArea )
	oGrid:CLSID  := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
	oGrid:create(,, {10,60},{610,370} )

		oGrid:Columns():Add(""):FormatColumn := "upper(%0)"
		oItems := oGrid:Items()
			h := oItems:AddItem("Root")
			oItems:InsertItem(h,,"Child 1")
			oItems:InsertItem(h,,"Child 2")
			oItems:InsertItem(h,,"Chld 3")
			oItems:SetProperty("ExpandItem",h,.T.)

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
575
Is there any option to display cells in lowercase

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGrid
	LOCAL oItems
	LOCAL h

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGrid := XbpActiveXControl():new( oForm:drawingArea )
	oGrid:CLSID  := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
	oGrid:create(,, {10,60},{610,370} )

		oGrid:Columns():Add(""):FormatColumn := "lower(%0)"
		oItems := oGrid:Items()
			h := oItems:AddItem("Root")
			oItems:InsertItem(h,,"Child 1")
			oItems:InsertItem(h,,"Child 2")
			oItems:InsertItem(h,,"Chld 3")
			oItems:SetProperty("ExpandItem",h,.T.)

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
574
How can I display the column using currency format and enlarge the font for certain values

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGrid
	LOCAL oColumn
	LOCAL oItems

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGrid := XbpActiveXControl():new( oForm:drawingArea )
	oGrid:CLSID  := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
	oGrid:create(,, {10,60},{610,370} )

		oColumn := oGrid:Columns():Add("Currency")
			oColumn:SetProperty("Def",17/*exCellValueFormat*/,1)
			oColumn:FormatColumn := "len(value) ? ((0:=dbl(value)) < 10 ? '<fgcolor=808080><font ;7>' : '<b>') + currency(=:0)"
		oItems := oGrid:Items()
			oItems:AddItem("1.23")
			oItems:AddItem("2.34")
			oItems:AddItem("9.94")
			oItems:AddItem("11.94")
			oItems:AddItem("1000")

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
573
How can I highlight only parts of the cells

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGrid
	LOCAL oColumn
	LOCAL oItems
	LOCAL h

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGrid := XbpActiveXControl():new( oForm:drawingArea )
	oGrid:CLSID  := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
	oGrid:create(,, {10,60},{610,370} )

		oColumn := oGrid:Columns():Add("")
			oColumn:SetProperty("Def",17/*exCellValueFormat*/,1)
			oColumn:FormatColumn := "value replace 'hil' with '<fgcolor=FF0000><b>hil</b></fgcolor>'"
		oItems := oGrid:Items()
			h := oItems:AddItem("Root")
			oItems:InsertItem(h,,"Child 1")
			oItems:InsertItem(h,,"Child 2")
			oItems:InsertItem(h,,"Child 3")
			oItems:SetProperty("ExpandItem",h,.T.)

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
572
How can I get the number of occurrences of a specified string in the cell

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGrid
	LOCAL oColumn
	LOCAL oItems
	LOCAL h

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGrid := XbpActiveXControl():new( oForm:drawingArea )
	oGrid:CLSID  := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
	oGrid:create(,, {10,60},{610,370} )

		oGrid:Columns():Add("")
		oColumn := oGrid:Columns():Add("occurrences")
			oColumn:ComputedField := "lower(%0) count 'o'"
			oColumn:FormatColumn := "'contains ' + value + ' of \'o\' chars'"
		oItems := oGrid:Items()
			h := oItems:AddItem("Root")
			oItems:InsertItem(h,,"Child 1 oooof the root")
			oItems:InsertItem(h,,"Child 2")
			oItems:InsertItem(h,,"Child 3")
			oItems:SetProperty("ExpandItem",h,.T.)

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
571
How can I display dates in my format

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGrid
	LOCAL oColumn
	LOCAL oItems

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGrid := XbpActiveXControl():new( oForm:drawingArea )
	oGrid:CLSID  := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
	oGrid:create(,, {10,60},{610,370} )

		oColumn := oGrid:Columns():Add("Date")
			oColumn:SetProperty("Def",17/*exCellValueFormat*/,1)
			oColumn:FormatColumn := "'<b>' + year(0:=date(value)) + '</b><fgcolor=808080><font ;6> (' + month(=:0) + ' - ' + day(=:0) +')'"
		oItems := oGrid:Items()
			oItems:AddItem("01/21/2001")
			oItems:AddItem("02/22/2002")
			oItems:AddItem("03/13/2003")
			oItems:AddItem("04/24/2004")

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
570
How can I display dates in short format

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGrid
	LOCAL oItems

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGrid := XbpActiveXControl():new( oForm:drawingArea )
	oGrid:CLSID  := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
	oGrid:create(,, {10,60},{610,370} )

		oGrid:Columns():Add("Date"):FormatColumn := "shortdate(value)"
		oItems := oGrid:Items()
			oItems:AddItem("01/01/2001")
			oItems:AddItem("02/02/2002")
			oItems:AddItem("03/03/2003")
			oItems:AddItem("04/04/2004")

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
569
How can I display dates in long format

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGrid
	LOCAL oItems

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGrid := XbpActiveXControl():new( oForm:drawingArea )
	oGrid:CLSID  := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
	oGrid:create(,, {10,60},{610,370} )

		oGrid:Columns():Add("Date"):FormatColumn := "longdate(value)"
		oItems := oGrid:Items()
			oItems:AddItem("01/01/2001")
			oItems:AddItem("02/02/2002")
			oItems:AddItem("03/03/2003")
			oItems:AddItem("04/04/2004")

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
568
How can I display only the right part of the cell

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGrid
	LOCAL oColumn
	LOCAL oItems
	LOCAL h

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGrid := XbpActiveXControl():new( oForm:drawingArea )
	oGrid:CLSID  := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
	oGrid:create(,, {10,60},{610,370} )

		oGrid:Columns():Add("")
		oColumn := oGrid:Columns():Add("Right")
			oColumn:ComputedField := "%0 right 2"
			oColumn:FormatColumn := "'" + CHR(34) + "' + value + '" + CHR(34) + "'"
		oItems := oGrid:Items()
			h := oItems:AddItem("Root")
			oItems:InsertItem(h,,"Child 1")
			oItems:InsertItem(h,,"Child 2")
			oItems:InsertItem(h,,"SChild 3")
			oItems:SetProperty("ExpandItem",h,.T.)

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
567
How can I display only the left part of the cell

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGrid
	LOCAL oItems
	LOCAL h

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGrid := XbpActiveXControl():new( oForm:drawingArea )
	oGrid:CLSID  := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
	oGrid:create(,, {10,60},{610,370} )

		oGrid:Columns():Add("")
		oGrid:Columns():Add("Left"):ComputedField := "%0 left 2"
		oItems := oGrid:Items()
			h := oItems:AddItem("Root")
			oItems:InsertItem(h,,"Child 1")
			oItems:InsertItem(h,,"Child 2")
			oItems:InsertItem(h,,"SChild 3")
			oItems:SetProperty("ExpandItem",h,.T.)

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
566
How can I display true or false instead 0 and -1

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGrid
	LOCAL oItems

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGrid := XbpActiveXControl():new( oForm:drawingArea )
	oGrid:CLSID  := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
	oGrid:create(,, {10,60},{610,370} )

		oGrid:Columns():Add("Boolean"):FormatColumn := "value != 0 ? 'true' : 'false'"
		oItems := oGrid:Items()
			oItems:AddItem(.T.)
			oItems:AddItem(.F.)
			oItems:AddItem(.T.)
			oItems:AddItem(0)
			oItems:AddItem(1)

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
565
How can I save data on XML format

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGrid

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGrid := XbpActiveXControl():new( oForm:drawingArea )
	oGrid:CLSID  := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
	oGrid:create(,, {10,60},{610,370} )

		oGrid:LoadXML("http://www.exontrol.net/testing.xml")
		oGrid:SaveXML("c:/temp/exgrid.xml")

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
564
How can I load data on XML format

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGrid

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGrid := XbpActiveXControl():new( oForm:drawingArea )
	oGrid:CLSID  := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
	oGrid:create(,, {10,60},{610,370} )

		oGrid:LoadXML("http://www.exontrol.net/testing.xml")

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
563
I have an EBN file how can I apply different colors to it, so no need to create a new one

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGrid
	LOCAL oItems
	LOCAL h,hC

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGrid := XbpActiveXControl():new( oForm:drawingArea )
	oGrid:CLSID  := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
	oGrid:create(,, {10,60},{610,370} )

		oGrid:VisualAppearance():Add(1,"c:\exontrol\images\normal.ebn")
		oGrid:SetProperty("SelBackColor",oGrid:BackColor())
		oGrid:SetProperty("SelForeColor",oGrid:ForeColor())
		oGrid:HasLines := 0/*exNoLine*/
		oGrid:Columns():Add("Default")
		oItems := oGrid:Items()
			h := oItems:AddItem("Root")
			hC := oItems:InsertItem(h,,"Default")
			oItems:SetProperty("ItemBackColor",hC,0x1000000)
			oItems:SetProperty("ItemHeight",oItems:InsertItem(h,,""),6)
			hC := oItems:InsertItem(h,,"Light Green")
			oItems:SetProperty("ItemBackColor",hC,0x100ff00)
			oItems:SetProperty("ItemHeight",oItems:InsertItem(h,,""),6)
			hC := oItems:InsertItem(h,,"Dark Green")
			oItems:SetProperty("ItemBackColor",hC,0x1007f00)
			oItems:SetProperty("ItemHeight",oItems:InsertItem(h,,""),6)
			hC := oItems:InsertItem(h,,"Magenta")
			oItems:SetProperty("ItemBackColor",hC,0x1ff7fff)
			oItems:SetProperty("ItemHeight",oItems:InsertItem(h,,""),6)
			hC := oItems:InsertItem(h,,"Yellow")
			oItems:SetProperty("ItemBackColor",hC,0x17fffff)
			oItems:SetProperty("ItemHeight",oItems:InsertItem(h,,""),6)
			oItems:SetProperty("ExpandItem",h,.T.)

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
562
How can I change the background color or the visual appearance using ebn for a particular column

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGrid
	LOCAL oColumns

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGrid := XbpActiveXControl():new( oForm:drawingArea )
	oGrid:CLSID  := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
	oGrid:create(,, {10,60},{610,370} )

		oGrid:VisualAppearance():Add(1,"c:\exontrol\images\normal.ebn")
		oColumns := oGrid:Columns()
			oColumns:Add("Column 1")
			oColumns:Add("Column 2"):SetProperty("Def",7/*exHeaderBackColor*/,16777216)
			oColumns:Add("Column 3"):SetProperty("Def",7/*exHeaderBackColor*/,16777471)
			oColumns:Add("Column 4")

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
561
How can I change the foreground color for a particular column

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGrid
	LOCAL oColumns

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGrid := XbpActiveXControl():new( oForm:drawingArea )
	oGrid:CLSID  := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
	oGrid:create(,, {10,60},{610,370} )

		oColumns := oGrid:Columns()
			oColumns:Add("Column 1")
			oColumns:Add("Column 2"):SetProperty("Def",8/*exHeaderForeColor*/,8439039)
			oColumns:Add("Column 3")

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
560
How can I change the background color for a particular column

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGrid
	LOCAL oColumns

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGrid := XbpActiveXControl():new( oForm:drawingArea )
	oGrid:CLSID  := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
	oGrid:create(,, {10,60},{610,370} )

		oColumns := oGrid:Columns()
			oColumns:Add("Column 1")
			oColumns:Add("Column 2"):SetProperty("Def",7/*exHeaderBackColor*/,8439039)
			oColumns:Add("Column 3")

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
559
Does your control support RightToLeft property for RTL languages or right to left

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGrid
	LOCAL oColumn
	LOCAL oItems
	LOCAL h

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGrid := XbpActiveXControl():new( oForm:drawingArea )
	oGrid:CLSID  := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
	oGrid:create(,, {10,60},{610,370} )

		oGrid:BeginUpdate()
		oGrid:ScrollBars := 15/*exDisableBoth*/
		oGrid:LinesAtRoot := -1/*exLinesAtRoot*/
		oColumn := oGrid:Columns():Add("P1")
			oColumn:SetProperty("Def",0/*exCellHasCheckBox*/,.T.)
			oColumn:PartialCheck := .T.
		oItems := oGrid:Items()
			h := oItems:AddItem("Root")
			oItems:InsertItem(h,,"Child 1")
			oItems:InsertItem(h,,"Child 2")
			oItems:SetProperty("ExpandItem",h,.T.)
		oGrid:RightToLeft := .T.
		oGrid:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
558
Is there any way to display the vertical scroll bar on the left side, as I want to align my data to the right

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGrid
	LOCAL oColumns

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGrid := XbpActiveXControl():new( oForm:drawingArea )
	oGrid:CLSID  := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
	oGrid:create(,, {10,60},{610,370} )

		oGrid:BeginUpdate()
		oGrid:ScrollBars := 15/*exDisableBoth*/
		oColumns := oGrid:Columns()
			oColumns:Add("C1")
			oColumns:Add("C2")
			oColumns:Add("C3")
			oColumns:Add("C4")
			oColumns:Add("C5")
			oColumns:Add("C6")
			oColumns:Add("C7")
			oColumns:Add("C8")
		oGrid:RightToLeft := .T.
		oGrid:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
557
Can I display the cell's check box after the text

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGrid
	LOCAL oColumn
	LOCAL oItems

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGrid := XbpActiveXControl():new( oForm:drawingArea )
	oGrid:CLSID  := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
	oGrid:create(,, {10,60},{610,370} )

		oColumn := oGrid:Columns():Add("Column")
			oColumn:SetProperty("Def",0/*exCellHasCheckBox*/,.T.)
			oColumn:SetProperty("Def",34/*exCellDrawPartsOrder*/,"caption,check")
		oItems := oGrid:Items()
			oItems:SetProperty("CellHasCheckBox",oItems:AddItem("Caption 1"),0,.T.)
			oItems:SetProperty("CellHasCheckBox",oItems:AddItem("Caption 2"),0,.T.)

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
556
Can I change the order of the parts in the cell, as checkbox after the text, and so on

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGrid
	LOCAL oItems
	LOCAL h

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGrid := XbpActiveXControl():new( oForm:drawingArea )
	oGrid:CLSID  := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
	oGrid:create(,, {10,60},{610,370} )

		oGrid:Images("gBJJgBAIDAAGAAEAAQhYAf8Pf4hh0QihCJo2AEZjQAjEZFEaIEaEEaAIAkcbk0olUrlktl0vmExmUzmk1m03nE5nU7nk9n0/oFBoVDolFo1HpFJpVLplNp1PqFRqVTqlVq1XrFZrVbrldr1fsFhsVjslls1ntFptVrtltt1vuFxuVzul1u13vF5vV7vl9v1/wGBwWDwmFw2HxGJxWLxmNx0xiFdyOTh8Tf9ZymXx+QytcyNgz8r0OblWjyWds+m0ka1Vf1ta1+r1mos2xrG2xeZ0+a0W0qOx3GO4NV3WeyvD2XJ5XL5nN51aiw+lfSj0gkUkAEllHanHI5j/cHg8EZf7w8vl8j4f/qfEZeB09/vjLAB30+kZQAP/P5/H6/yNAOAEAwCjMBwFAEDwJBMDwLBYAP2/8Hv8/gAGAD8LQs9w/nhDY/oygIA=")
		oGrid:Columns():Add("Column"):SetProperty("Def",34/*exCellDrawPartsOrder*/,"caption,check,icon,icons,picture")
		oItems := oGrid:Items()
			h := oItems:AddItem("Text")
			oItems:SetProperty("CellImage",h,0,1)
			oItems:SetProperty("CellHasCheckBox",h,0,.T.)

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
555
Can I have an image displayed after the text. Can I get that effect without using HTML content

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGrid
	LOCAL oItems
	LOCAL h

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGrid := XbpActiveXControl():new( oForm:drawingArea )
	oGrid:CLSID  := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
	oGrid:create(,, {10,60},{610,370} )

		oGrid:Images("gBJJgBAIDAAGAAEAAQhYAf8Pf4hh0QihCJo2AEZjQAjEZFEaIEaEEaAIAkcbk0olUrlktl0vmExmUzmk1m03nE5nU7nk9n0/oFBoVDolFo1HpFJpVLplNp1PqFRqVTqlVq1XrFZrVbrldr1fsFhsVjslls1ntFptVrtltt1vuFxuVzul1u13vF5vV7vl9v1/wGBwWDwmFw2HxGJxWLxmNx0xiFdyOTh8Tf9ZymXx+QytcyNgz8r0OblWjyWds+m0ka1Vf1ta1+r1mos2xrG2xeZ0+a0W0qOx3GO4NV3WeyvD2XJ5XL5nN51aiw+lfSj0gkUkAEllHanHI5j/cHg8EZf7w8vl8j4f/qfEZeB09/vjLAB30+kZQAP/P5/H6/yNAOAEAwCjMBwFAEDwJBMDwLBYAP2/8Hv8/gAGAD8LQs9w/nhDY/oygIA=")
		oGrid:Columns():Add("Column"):SetProperty("Def",34/*exCellDrawPartsOrder*/,"caption,icon,check,icons,picture")
		oItems := oGrid:Items()
			h := oItems:AddItem("Text")
			oItems:SetProperty("CellImage",h,0,1)

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
554
How can I display the column's header using multiple lines

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGrid

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGrid := XbpActiveXControl():new( oForm:drawingArea )
	oGrid:CLSID  := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
	oGrid:create(,, {10,60},{610,370} )

		oGrid:HeaderHeight := 128
		oGrid:HeaderSingleLine := .F.
		oGrid:Columns():Add("This is just a column that should break the header."):Width := 32
		oGrid:Columns():Add("This is just another column that should break the header.")

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
553
How can include the values in the inner cells in the drop down filter window

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGrid
	LOCAL oColumn
	LOCAL oItems
	LOCAL s

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGrid := XbpActiveXControl():new( oForm:drawingArea )
	oGrid:CLSID  := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
	oGrid:create(,, {10,60},{610,370} )

		oGrid:DrawGridLines := -2/*exRowLines*/
		oGrid:VisualAppearance():Add(1,"c:\exontrol\images\normal.ebn")
		oGrid:SetProperty("Description",1/*exFilterBarBlanks*/,"")
		oGrid:SetProperty("Description",2/*exFilterBarNonBlanks*/,"")
		oColumn := oGrid:Columns():Add("Single Column")
			oColumn:HTMLCaption := "Single column with <b>inner cells</b>"
			oColumn:ToolTip := "Click the drop down filter button, and the filter list includes the inner cells values too."
			oColumn:DisplayFilterButton := .T.
			oColumn:DisplayFilterPattern := .F.
			oColumn:FilterList := 64/*exIncludeInnerCells*/
		oGrid:ShowFocusRect := .F.
		oItems := oGrid:Items()
			s := oItems:SplitCell(oItems:AddItem("S 1.1"),0)
			oItems:SetProperty("CellValue",,s,"S 1.2")
			oItems:SetProperty("CellHAlignment",,s,1/*CenterAlignment*/)
			oItems:SetProperty("CellBackColor",,s,0x1000000)
			oItems:SetProperty("CellWidth",,s,84)
			s := oItems:SplitCell(oItems:AddItem("S 2.1"),0)
			oItems:SetProperty("CellValue",,s,"S 2.2")
			oItems:SetProperty("CellHAlignment",,s,1/*CenterAlignment*/)
			oItems:SetProperty("CellWidth",,s,84)
			s := oItems:SplitCell(oItems:AddItem("S 3.1"),0)
			oItems:SetProperty("CellValue",,s,"S 3.2")
			oItems:SetProperty("CellHAlignment",,s,1/*CenterAlignment*/)
			oItems:SetProperty("CellBackColor",,s,0x1000000)
			oItems:SetProperty("CellWidth",,s,84)

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
552
How can I sort the value gets listed in the drop down filter window

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGrid
	LOCAL oColumn,oColumn1
	LOCAL oItems
	LOCAL h

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGrid := XbpActiveXControl():new( oForm:drawingArea )
	oGrid:CLSID  := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
	oGrid:create(,, {10,60},{610,370} )

		oGrid:LinesAtRoot := -1/*exLinesAtRoot*/
		oGrid:MarkSearchColumn := .F.
		oGrid:SetProperty("Description",0/*exFilterBarAll*/,"")
		oGrid:SetProperty("Description",1/*exFilterBarBlanks*/,"")
		oGrid:SetProperty("Description",2/*exFilterBarNonBlanks*/,"")
		oColumn := oGrid:Columns():Add("P1")
			oColumn:DisplayFilterButton := .T.
			oColumn:DisplayFilterPattern := .F.
			oColumn:FilterList := 16/*exSortItemsDesc*/
		oColumn1 := oGrid:Columns():Add("P2")
			oColumn1:DisplayFilterButton := .T.
			oColumn1:DisplayFilterPattern := .F.
			oColumn1:FilterList := 32/*exSortItemsAsc*/
		oItems := oGrid:Items()
			h := oItems:AddItem("Z3")
			oItems:SetProperty("CellValue",h,1,"C")
			oItems:SetProperty("CellValue",oItems:InsertItem(h,,"Z1"),1,"B")
			oItems:SetProperty("CellValue",oItems:InsertItem(h,,"Z2"),1,"A")
			oItems:SetProperty("ExpandItem",h,.T.)

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
551
How can I align the text/caption on the scroll bar

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGrid

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGrid := XbpActiveXControl():new( oForm:drawingArea )
	oGrid:CLSID  := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
	oGrid:create(,, {10,60},{610,370} )

		oGrid:SetProperty("ScrollPartCaption",1/*exHScroll*/,512/*exLowerBackPart*/,"left")
		oGrid:SetProperty("ScrollPartCaptionAlignment",1/*exHScroll*/,512/*exLowerBackPart*/,0/*LeftAlignment*/)
		oGrid:SetProperty("ScrollPartCaption",1/*exHScroll*/,128/*exUpperBackPart*/,"right")
		oGrid:SetProperty("ScrollPartCaptionAlignment",1/*exHScroll*/,128/*exUpperBackPart*/,2/*RightAlignment*/)
		oGrid:ColumnAutoResize := .F.
		oGrid:Columns():Add(Transform(1,""))
		oGrid:Columns():Add(Transform(2,""))
		oGrid:Columns():Add(Transform(3,""))
		oGrid:Columns():Add(Transform(4,""))
		oGrid:Columns():Add(Transform(5,""))
		oGrid:Columns():Add(Transform(6,""))

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
550
How do I select the next row/item

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGrid
	LOCAL oItems

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGrid := XbpActiveXControl():new( oForm:drawingArea )
	oGrid:CLSID  := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
	oGrid:create(,, {10,60},{610,370} )

		oGrid:Columns():Add("Column")
		oItems := oGrid:Items()
			oItems:AddItem("Item 1")
			oItems:AddItem("Item 2")
			oItems:AddItem("Item 3")
			oItems:SetProperty("SelectItem",oItems:NextVisibleItem(oItems:FocusItem()),.T.)

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
549
How do I enable resizing ( changing the height ) the items at runtime

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGrid
	LOCAL oItems

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGrid := XbpActiveXControl():new( oForm:drawingArea )
	oGrid:CLSID  := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
	oGrid:create(,, {10,60},{610,370} )

		oGrid:ItemsAllowSizing := -1/*exResizeItem*/
		oGrid:DrawGridLines := 1/*exHLines*/
		oGrid:ScrollBySingleLine := .T.
		oGrid:Columns():Add("Column")
		oGrid:Items():AddItem("Item 1")
		oItems := oGrid:Items()
			oItems:SetProperty("ItemHeight",oItems:AddItem("Item 2"),48)
		oGrid:Items():AddItem("Item 3")
		oGrid:Items():AddItem("Item 4")

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
548
How do I enable resizing all the items at runtime

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGrid
	LOCAL oItems

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGrid := XbpActiveXControl():new( oForm:drawingArea )
	oGrid:CLSID  := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
	oGrid:create(,, {10,60},{610,370} )

		oGrid:ItemsAllowSizing := 1/*exResizeAllItems*/
		oGrid:DrawGridLines := 1/*exHLines*/
		oGrid:Columns():Add("Column")
		oGrid:Items():AddItem("Item 1")
		oItems := oGrid:Items()
			oItems:SetProperty("ItemHeight",oItems:AddItem("Item 2"),48)
		oGrid:Items():AddItem("Item 3")

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
547
How can I remove the filter
#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGrid
	LOCAL oColumn

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGrid := XbpActiveXControl():new( oForm:drawingArea )
	oGrid:CLSID  := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
	oGrid:create(,, {10,60},{610,370} )

		oColumn := oGrid:Columns():Add("Column")
			oColumn:DisplayFilterButton := .T.
			oColumn:FilterType := 1/*exBlanks*/
		oGrid:ApplyFilter()
		oGrid:ClearFilter()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
546
How can I vertically display the column's caption, in the header

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGrid

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGrid := XbpActiveXControl():new( oForm:drawingArea )
	oGrid:CLSID  := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
	oGrid:create(,, {10,60},{610,370} )

		oGrid:Columns():Add("A"):HeaderVertical := .T.
		oGrid:Columns():Add("B"):HeaderVertical := .T.
		oGrid:Columns():Add("H"):HeaderVertical := .F.

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
545
When I have a column in a grid that is set to having a checkbox, and the grid's singlesel is set to false, I am able to toggle the checkboxes for a while, but lose this functionality eventually. Do you have a tip

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGrid
	LOCAL oItems

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGrid := XbpActiveXControl():new( oForm:drawingArea )
	oGrid:CLSID  := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
	oGrid:create(,, {10,60},{610,370} )

		oGrid:Columns():Add("Check"):SetProperty("Def",0/*exCellHasCheckBox*/,.T.)
		oGrid:SingleSel := .F.
		oItems := oGrid:Items()
			oItems:AddItem(.T.)
			oItems:AddItem(.F.)
			oItems:AddItem(.F.)

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
544
How do I arrange, format or layout the item on multiple levels or lines, as a subform

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGrid
	LOCAL var_Column,var_Column1,var_Column2,var_Column3,var_Column4,var_Column5,var_Column6
	LOCAL oColumns
	LOCAL oEditor,var_Editor
	LOCAL oItems
	LOCAL h0

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGrid := XbpActiveXControl():new( oForm:drawingArea )
	oGrid:CLSID  := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
	oGrid:create(,, {10,60},{610,370} )

		oGrid:Images("gBJJgBAIDAAGAAEAAQhYAf8Pf4hh0QihCJo2AEZjQAjEZFEaIEaEEaAIAkcbk0olUrlktl0vmExmUzmk1m03nE5nU7nk9n0/oFBoVDolFo1HpFJpVLplNp1PqFRqVTqlVq1XrFZrVbrldr1fsFhsVjslls1ntFptVrtltt1vuFxuVzul1u13vF5vV7vl9v1/wGBwWDwmFw2HxGJxWLxmNx0xiFdyOTh8Tf9ZymXx+QytcyNgz8r0OblWjyWds+m0ka1Vf1ta1+r1mos2xrG2xeZ0+a0W0qOx3GO4NV3WeyvD2XJ5XL5nN51aiw+lfSj0gkUkAEllHanHI5j/cHg8EZf7w8vl8j4f/qfEZeB09/vjLAB30+kZQAP/P5/H6/yNAOAEAwCjMBwFAEDwJBMDwLBYAP2/8Hv8/gAGAD8LQs9w/nhDY/oygIA=")
		oGrid:DrawGridLines := -2/*exRowLines*/
		oGrid:HeaderVisible := .F.
		oGrid:ItemsAllowSizing := -1/*exResizeItem*/
		oGrid:MarkSearchColumn := .F.
		oGrid:ScrollBySingleLine := .T.
		oGrid:SetProperty("BackColor",AutomationTranslateColor( GraMakeRGBColor  ( { 255,255,255 } )  , .F. ))
		oGrid:SetProperty("SelBackColor",AutomationTranslateColor( GraMakeRGBColor  ( { 255,255,255 } )  , .F. ))
		oGrid:SetProperty("SelForeColor",0x80000012)
		oColumns := oGrid:Columns()
			oColumns:Add("")
			var_Column := oColumns:Add("Column")
				var_Column:Visible := .F.
				var_Column:Editor():EditType := 1/*EditType*/
			var_Column1 := oColumns:Add("Column")
				var_Column1:Visible := .F.
				var_Column1:Editor():EditType := 2/*DropDownType*/
			var_Column2 := oColumns:Add("Column")
				var_Column2:Visible := .F.
				var_Column2:Editor():EditType := 2/*DropDownType*/
			var_Column3 := oColumns:Add("Column")
				var_Column3:Visible := .F.
				oEditor := var_Column3:Editor()
					oEditor:EditType := 19/*CheckValueType*/
					oEditor:SetProperty("Option",17/*exCheckValue2*/,1)
			var_Column4 := oColumns:Add("Column")
				var_Column4:Visible := .F.
				var_Column4:Editor():EditType := 7/*DateType*/
			oColumns:Add("Column"):Visible := .F.
			var_Column5 := oColumns:Add("Column")
				var_Column5:Visible := .F.
				var_Column5:Editor():EditType := 2/*DropDownType*/
			var_Column6 := oColumns:Add("Column")
				var_Column6:Visible := .F.
				var_Column6:SetProperty("Def",16/*exCellSingleLine*/,0)
				var_Editor := var_Column6:Editor()
					var_Editor:EditType := 5/*MemoType*/
					var_Editor:ButtonWidth := 17
					var_Editor:SetProperty("Option",23/*exDownArrow*/,0)
					var_Editor:SetProperty("Option",25/*exEndKey*/,0)
					var_Editor:SetProperty("Option",24/*exHomeKey*/,0)
					var_Editor:SetProperty("Option",20/*exLeftArrow*/,0)
					var_Editor:SetProperty("Option",3/*exMemoAutoSize*/,0)
					var_Editor:SetProperty("Option",2/*exMemoVScrollBar*/,-1)
					var_Editor:SetProperty("Option",27/*exPageDownKey*/,0)
					var_Editor:SetProperty("Option",26/*exPageUpKey*/,0)
					var_Editor:SetProperty("Option",21/*exRightArrow*/,0)
					var_Editor:SetProperty("Option",22/*exUpArrow*/,0)
				var_Column6:Visible := .F.
			oColumns:Add("Column"):Visible := .F.
		oItems := oGrid:Items()
			h0 := oItems:AddItem("")
			oItems:SetProperty("CellValue",h0,9,"Dismiss")
			oItems:SetProperty("CellFormatLevel",h0,0,"12;" + CHR(34) + " " + CHR(34) + "[b=0][bg=RGB(248,248,248)]/(" + CHR(34) + " " + CHR(34) + "[b=0][bg=RGB(248,248,248)]:12,(1;" + CHR(34) + " " + CHR(34) + "[b=0]/(" + CHR(34) + " " + CHR(34) + "[b=0]:1,(25;(5;" + CHR(34) + " " + CHR(34) + "[b=0]/((" + CHR(34) + "Subject:" + CHR(34) + "[b=0]:80,(1;" + CHR(34) + " " + CHR(34) + "[b=0][bg=RGB(0,0,0)]/(" + CHR(34) + " " + CHR(34) + "[b=0][bg=RGB(0,0,0)]:1,(" + CHR(34) + " " + CHR(34) + "[b=0][bg=RGB(255,0,0)]:5,1[b=0])," + CHR(34) + " " + CHR(34) + "[b=0][bg=" +;
		"RGB(0,0,0)]:1)/1;" + CHR(34) + " " + CHR(34) + "[b=0][bg=RGB(0,0,0)]))/1;" + CHR(34) + " " + CHR(34) + "[b=0]))/20;(" + CHR(34) + "Location:" + CHR(34) + "[b=0]:80,(1;" + CHR(34) + " " + CHR(34) + "[b=0][bg=RGB(0,0,0)]/(" + CHR(34) + " " + CHR(34) + "[b=0][bg=RGB(0,0,0)]:1,2[b=0]," + CHR(34) + " " + CHR(34) + "[b=0][bg=RGB(0,0,0)]:1)/1;" + CHR(34) + " " + CHR(34) + "[b=0][bg=RGB(0,0,0)]),((" + CHR(34) + " " + CHR(34) + "[b=0]:10," + CHR(34) + "Label:" + CHR(34) + "[b=0])):50,(1;" + CHR(34) + " " + CHR(34) +" +;
		" "[b=0][bg=RGB(0,0,0)]/(" + CHR(34) + " " + CHR(34) + "[b=0][bg=RGB(0,0,0)]:1,3[b=0]," + CHR(34) + " " + CHR(34) + "[b=0][bg=RGB(0,0,0)]:1)/1;" + CHR(34) + " " + CHR(34) + "[b=0][bg=RGB(0,0,0)]))/50;(10;" + CHR(34) + " " + CHR(34) + "[b=0]/(1;" + CHR(34) + " " + CHR(34) + "[b=0][bg=RGB(255,0,0)]/(" + CHR(34) + "Recurrence:" + CHR(34) + "[b=0]:80," + CHR(34) + "Occurs every day effective 20/04/2007 from 01:00 to 01:01." + CHR(34) + "[b=0])/1;" + CHR(34) + " " + CHR(34) + "[b=0][bg=RGB(255,0,0)])/10;" + CHR(3" +;
		"4) + " " + CHR(34) + "[b=0])/23;(4[b=0]:20," + CHR(34) + "Reminder:" + CHR(34) + "[b=0]:60,(1;" + CHR(34) + " " + CHR(34) + "[b=0][bg=RGB(0,0,0)]/(" + CHR(34) + " " + CHR(34) + "[b=0][bg=RGB(0,0,0)]:1,5[b=0]," + CHR(34) + " " + CHR(34) + "[b=0][bg=RGB(0,0,0)]:1)/1;" + CHR(34) + " " + CHR(34) + "[b=0][bg=RGB(0,0,0)]),((" + CHR(34) + " " + CHR(34) + "[b=0]:5,6[b=0])):30,((" + CHR(34) + " " + CHR(34) + "[b=0]:10," + CHR(34) + "Show time as:" + CHR(34) + "[b=0])):90,(1;" + CHR(34) + " " + CHR(34) + "[b=0][bg=RG" +;
		"B(0,0,0)]/(" + CHR(34) + " " + CHR(34) + "[b=0][bg=RGB(0,0,0)]:1,7[b=0]," + CHR(34) + " " + CHR(34) + "[b=0][bg=RGB(0,0,0)]:1)/1;" + CHR(34) + " " + CHR(34) + "[b=0][bg=RGB(0,0,0)]))/(12;" + CHR(34) + " " + CHR(34) + "[b=0]/(1;" + CHR(34) + " " + CHR(34) + "[b=0][bg=RGB(0,0,0)]/(" + CHR(34) + " " + CHR(34) + "[b=0][bg=RGB(0,0,0)]:1,8[b=0]," + CHR(34) + " " + CHR(34) + "[b=0][bg=RGB(0,0,0)]:1)/1;" + CHR(34) + " " + CHR(34) + "[b=0][bg=RGB(0,0,0)]))/35;(5;" + CHR(34) + " " + CHR(34) + "[b=0]/(" + CHR(34) + " " +;
		"" + CHR(34) + "[b=0]," + CHR(34) + " " + CHR(34) + "[b=0],((" + CHR(34) + " " + CHR(34) + "[b=0]:40,9[b=0])))/5;" + CHR(34) + " " + CHR(34) + "[b=0]))," + CHR(34) + " " + CHR(34) + "[b=0]:1)/1;" + CHR(34) + " " + CHR(34) + "[b=0])," + CHR(34) + " " + CHR(34) + "[b=0][bg=RGB(248,248,248)]:12)/12;" + CHR(34) + " " + CHR(34) + "[b=0][bg=RGB(248,248,248)]")
			oItems:SetProperty("CellHasCheckBox",h0,4,.T.)
			oItems:SetProperty("CellHasButton",h0,9,.T.)
			oItems:SetProperty("CellHAlignment",h0,9,1/*CenterAlignment*/)
			oItems:SetProperty("CellVAlignment",h0,8,0/*exTop*/)
			oItems:SetProperty("CellForeColor",h0,8,AutomationTranslateColor( GraMakeRGBColor  ( { 0,0,0 } )  , .F. ))
			oItems:SetProperty("CellHasButton",h0,6,.T.)
			oItems:SetProperty("CellValue",h0,6,"<img>1</img>")
			oItems:SetProperty("CellValueFormat",h0,6,1/*exHTML*/)
			oItems:SetProperty("CellHAlignment",h0,6,1/*CenterAlignment*/)
			oItems:SetProperty("ItemHeight",h0,296)

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
543
How do I arrange, format or layout the item on multiple levels or lines

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGrid
	LOCAL oItems

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGrid := XbpActiveXControl():new( oForm:drawingArea )
	oGrid:CLSID  := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
	oGrid:create(,, {10,60},{610,370} )

		oGrid:DrawGridLines := -1/*exAllLines*/
		oGrid:MarkSearchColumn := .F.
		oGrid:DefaultItemHeight := 34
		oGrid:Columns():Add(Transform(1,"")):Visible := .F.
		oGrid:Columns():Add(Transform(2,"")):Visible := .F.
		oGrid:Columns():Add(Transform(3,"")):Visible := .F.
		oGrid:Columns():Add(Transform(4,"")):Visible := .F.
		oGrid:Columns():Add(Transform(5,"")):Visible := .F.
		oGrid:Columns():Add("General")
		oItems := oGrid:Items()
			oItems:DefaultItem := oItems:AddItem(0)
			oItems:SetProperty("CellValue",0,1,1)
			oItems:SetProperty("CellValue",0,2,2)
			oItems:SetProperty("CellValue",0,3,3)
			oItems:SetProperty("CellValue",0,4,4)
			oItems:SetProperty("CellFormatLevel",oItems:DefaultItem(),5,"0,1,2/3,4")
			oItems:DefaultItem := oItems:AddItem(5)
			oItems:SetProperty("CellValue",0,1,6)
			oItems:SetProperty("CellValue",0,2,7)
			oItems:SetProperty("CellValue",0,3,8)
			oItems:SetProperty("CellValue",0,4,9)
			oItems:SetProperty("CellFormatLevel",oItems:DefaultItem(),5,"3,4/0,1,2")

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
542
How do I arrange, format or layout the column's header on multiple levels or lines

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGrid

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGrid := XbpActiveXControl():new( oForm:drawingArea )
	oGrid:CLSID  := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
	oGrid:create(,, {10,60},{610,370} )

		oGrid:Columns():Add(Transform(1,"")):Visible := .F.
		oGrid:Columns():Add(Transform(2,"")):Visible := .F.
		oGrid:Columns():Add(Transform(3,"")):Visible := .F.
		oGrid:Columns():Add(Transform(4,"")):Visible := .F.
		oGrid:Columns():Add(Transform(5,"")):Visible := .F.
		oGrid:HeaderHeight := 32
		oGrid:Columns():Add("General"):FormatLevel := "0,1,2/3,4"

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
541
How do I arrange, format or layout the item on multiple levels or lines

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGrid
	LOCAL oColumn,oColumn1,var_Column,var_Column1,var_Column2
	LOCAL oEditor
	LOCAL oItems,oItems1
	LOCAL h0

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGrid := XbpActiveXControl():new( oForm:drawingArea )
	oGrid:CLSID  := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
	oGrid:create(,, {10,60},{610,370} )

		oGrid:MarkSearchColumn := .F.
		oGrid:DrawGridLines := -1/*exAllLines*/
		oGrid:DefaultItemHeight := 53
		oGrid:Columns():Add("EmployeeID"):Visible := .F.
		oGrid:Columns():Add("LastName"):Visible := .F.
		oGrid:Columns():Add("FirstName"):Visible := .F.
		oGrid:Columns():Add("Handler"):Visible := .F.
		var_Column := oGrid:Columns:Add("Title")
			var_Column:Visible := .F.
			var_Column:DisplayFilterButton := .T.
		var_Column1 := oGrid:Columns:Add("TitleOfCourtesy")
			var_Column1:Visible := .F.
			var_Column1:DisplayFilterButton := .T.
		oGrid:Columns():Add("BirthDate"):Visible := .F.
		oGrid:Columns():Add("HideDate"):Visible := .F.
		oGrid:Columns():Add("Address"):Visible := .F.
		oGrid:Columns():Add("City"):Visible := .F.
		oGrid:Columns():Add("Region"):Visible := .F.
		oGrid:Columns():Add("PostCode"):Visible := .F.
		oGrid:Columns():Add("Country"):Visible := .F.
		oGrid:Columns():Add("HomePage"):Visible := .F.
		oGrid:Columns():Add("Extension"):Visible := .F.
		var_Column2 := oGrid:Columns:Add("Photo")
			var_Column2:Visible := .F.
			oEditor := var_Column2:Editor()
				oEditor:DropDownVisible := .F.
				oEditor:EditType := 11/*PictureType*/
				oEditor:SetProperty("Option",52/*exShowPictureType*/,0)
		oGrid:Columns():Add("Notes"):Visible := .F.
		oGrid:Columns():Add("ReportsTo"):Visible := .F.
		oColumn := oGrid:Columns():Add("Personal Info")
			oColumn:SetProperty("Def",32/*exCellFormatLevel*/,"15:54,(2/1/4)")
			oColumn:FormatLevel := "18;18/(15:54,(2/1/4))"
			oColumn:Width := 196
		oColumn1 := oGrid:Columns():Add("General Info")
			oColumn1:SetProperty("Def",32/*exCellFormatLevel*/,"(8/18;5):128,((((13/11/12),(6/7/10)),16))")
			oColumn1:FormatLevel := "18;19/((8/18;5):128,((((13/11/12),(6/7/10)),16)))"
			oColumn1:Width := 512
		oItems := oGrid:Items()
			h0 := oItems:AddItem(1)
			oItems:SetProperty("CellValue",h0,1,"Davolio")
			oItems:SetProperty("CellValue",h0,2,"Nancy")
			oItems:SetProperty("CellValue",h0,3,0)
			oItems:SetProperty("CellValue",h0,4,"Sales Representative")
			oItems:SetProperty("CellValue",h0,5,"Ms.")
			oItems:SetProperty("CellValue",h0,6,"12/8/1948")
			oItems:SetProperty("CellValue",h0,7,"5/1/1992")
			oItems:SetProperty("CellValue",h0,8,"507-20th Ave. \r\nE.Apt.  2A")
			oItems:SetProperty("CellValue",h0,9,"Seattle")
			oItems:SetProperty("CellValue",h0,10,"WA")
			oItems:SetProperty("CellValue",h0,11,"98122")
			oItems:SetProperty("CellValue",h0,12,"USA")
			oItems:SetProperty("CellValue",h0,13,"(206) 555-9857")
			oItems:SetProperty("CellValue",h0,14,"5467")
			oItems:SetProperty("CellValue",h0,15,oGrid:ExecuteTemplate("loadpicture(`c:\exontrol\images\sample.bmp`)"))
			oItems:SetProperty("CellValue",h0,16,"Education includes a BA in psychology from Colorado State University in 1970.  She also completed " + CHR(34) + "The Art of the Cold Call." + CHR(34) + "  Nancy is a member of ToastmastersInternational.")
			oItems:SetProperty("CellValue",h0,17,2)
		oGrid:PutItems(oGrid:GetItems(0))
		oItems1 := oGrid:Items()
			oItems1:SetProperty("CellFormatLevel",oItems1:FocusItem(),"General Info","15,10,4")
			oItems1:SetProperty("CellFormatLevel",oItems1:FocusItem(),"Personal Info","1/2")

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
540
How do I arrange, format or layout the data on multiple levels or lines

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGrid
	LOCAL oColumn,oColumn1,var_Column,var_Column1,var_Column2
	LOCAL oEditor
	LOCAL oItems
	LOCAL h0

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGrid := XbpActiveXControl():new( oForm:drawingArea )
	oGrid:CLSID  := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
	oGrid:create(,, {10,60},{610,370} )

		oGrid:MarkSearchColumn := .F.
		oGrid:DrawGridLines := -1/*exAllLines*/
		oGrid:DefaultItemHeight := 53
		oGrid:Columns():Add("EmployeeID"):Visible := .F.
		oGrid:Columns():Add("LastName"):Visible := .F.
		oGrid:Columns():Add("FirstName"):Visible := .F.
		oGrid:Columns():Add("Handler"):Visible := .F.
		var_Column := oGrid:Columns:Add("Title")
			var_Column:Visible := .F.
			var_Column:DisplayFilterButton := .T.
		var_Column1 := oGrid:Columns:Add("TitleOfCourtesy")
			var_Column1:Visible := .F.
			var_Column1:DisplayFilterButton := .T.
		oGrid:Columns():Add("BirthDate"):Visible := .F.
		oGrid:Columns():Add("HideDate"):Visible := .F.
		oGrid:Columns():Add("Address"):Visible := .F.
		oGrid:Columns():Add("City"):Visible := .F.
		oGrid:Columns():Add("Region"):Visible := .F.
		oGrid:Columns():Add("PostCode"):Visible := .F.
		oGrid:Columns():Add("Country"):Visible := .F.
		oGrid:Columns():Add("HomePage"):Visible := .F.
		oGrid:Columns():Add("Extension"):Visible := .F.
		var_Column2 := oGrid:Columns:Add("Photo")
			var_Column2:Visible := .F.
			oEditor := var_Column2:Editor()
				oEditor:DropDownVisible := .F.
				oEditor:EditType := 11/*PictureType*/
				oEditor:SetProperty("Option",52/*exShowPictureType*/,0)
		oGrid:Columns():Add("Notes"):Visible := .F.
		oGrid:Columns():Add("ReportsTo"):Visible := .F.
		oColumn := oGrid:Columns():Add("Personal Info")
			oColumn:SetProperty("Def",32/*exCellFormatLevel*/,"15:54,(2/1/4)")
			oColumn:FormatLevel := "18;18/(15:54,(2/1/4))"
			oColumn:Width := 196
		oColumn1 := oGrid:Columns():Add("General Info")
			oColumn1:SetProperty("Def",32/*exCellFormatLevel*/,"(8/18;5):128,((((13/11/12),(6/7/10)),16))")
			oColumn1:FormatLevel := "18;19/((8/18;5):128,((((13/11/12),(6/7/10)),16)))"
			oColumn1:Width := 512
		oItems := oGrid:Items()
			h0 := oItems:AddItem(1)
			oItems:SetProperty("CellValue",h0,1,"Davolio")
			oItems:SetProperty("CellValue",h0,2,"Nancy")
			oItems:SetProperty("CellValue",h0,3,0)
			oItems:SetProperty("CellValue",h0,4,"Sales Representative")
			oItems:SetProperty("CellValue",h0,5,"Ms.")
			oItems:SetProperty("CellValue",h0,6,"12/8/1948")
			oItems:SetProperty("CellValue",h0,7,"5/1/1992")
			oItems:SetProperty("CellValue",h0,8,"507-20th Ave. \r\nE.Apt.  2A")
			oItems:SetProperty("CellValue",h0,9,"Seattle")
			oItems:SetProperty("CellValue",h0,10,"WA")
			oItems:SetProperty("CellValue",h0,11,"98122")
			oItems:SetProperty("CellValue",h0,12,"USA")
			oItems:SetProperty("CellValue",h0,13,"(206) 555-9857")
			oItems:SetProperty("CellValue",h0,14,"5467")
			oItems:SetProperty("CellValue",h0,15,oGrid:ExecuteTemplate("loadpicture(`c:\exontrol\images\sample.bmp`)"))
			oItems:SetProperty("CellValue",h0,16,"Education includes a BA in psychology from Colorado State University in 1970.  She also completed " + CHR(34) + "The Art of the Cold Call." + CHR(34) + "  Nancy is a member of ToastmastersInternational.")
			oItems:SetProperty("CellValue",h0,17,2)
		oGrid:PutItems(oGrid:GetItems(0))
		oGrid:PutItems(oGrid:GetItems(0))
		oGrid:PutItems(oGrid:GetItems(0))

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
539
How do I arrange, format or layout the column's data on multiple levels or lines

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGrid
	LOCAL oColumn,oColumn1,var_Column,var_Column1

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGrid := XbpActiveXControl():new( oForm:drawingArea )
	oGrid:CLSID  := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
	oGrid:create(,, {10,60},{610,370} )

		oGrid:MarkSearchColumn := .F.
		oGrid:DrawGridLines := -1/*exAllLines*/
		oGrid:DefaultItemHeight := 68
		oGrid:Columns():Add("EmployeeID"):Visible := .F.
		oGrid:Columns():Add("LastName"):Visible := .F.
		oGrid:Columns():Add("FirstName"):Visible := .F.
		oGrid:Columns():Add("Handler"):Visible := .F.
		var_Column := oGrid:Columns:Add("Title")
			var_Column:Visible := .F.
			var_Column:DisplayFilterButton := .T.
		var_Column1 := oGrid:Columns:Add("TitleOfCourtesy")
			var_Column1:Visible := .F.
			var_Column1:DisplayFilterButton := .T.
		oGrid:Columns():Add("BirthDate"):Visible := .F.
		oGrid:Columns():Add("HideDate"):Visible := .F.
		oGrid:Columns():Add("Address"):Visible := .F.
		oGrid:Columns():Add("City"):Visible := .F.
		oGrid:Columns():Add("Region"):Visible := .F.
		oGrid:Columns():Add("PostCode"):Visible := .F.
		oGrid:Columns():Add("Country"):Visible := .F.
		oGrid:Columns():Add("HomePage"):Visible := .F.
		oGrid:Columns():Add("Extension"):Visible := .F.
		oGrid:Columns():Add("Photo"):Visible := .F.
		oGrid:Columns():Add("Notes"):Visible := .F.
		oGrid:Columns():Add("ReportsTo"):Visible := .F.
		oColumn := oGrid:Columns():Add("Personal Info")
			oColumn:SetProperty("Def",32/*exCellFormatLevel*/,"18;18/(15:54,(2/1/4))")
			oColumn:FormatLevel := "18;18/(15:54,(2/1/4))"
			oColumn:Width := 196
		oColumn1 := oGrid:Columns():Add("General Info")
			oColumn1:SetProperty("Def",32/*exCellFormatLevel*/,"18;19/((8/18;5):128,((((13/11/12),(6/7/10)),16)))")
			oColumn1:FormatLevel := "18;19/((8/18;5):128,((((13/11/12),(6/7/10)),16)))"
			oColumn1:Width := 512
		oGrid:Items():AddItem("")
		oGrid:Items():AddItem("")
		oGrid:Items():AddItem("")
		oGrid:Items():AddItem("")

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
538
How do I arrange, format or layout the column's header on multiple levels or lines

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGrid
	LOCAL oColumn,oColumn1,oColumn2,oColumn3

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGrid := XbpActiveXControl():new( oForm:drawingArea )
	oGrid:CLSID  := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
	oGrid:create(,, {10,60},{610,370} )

		oGrid:Columns():Add("EmployeeID"):Visible := .F.
		oGrid:Columns():Add("LastName"):Visible := .F.
		oGrid:Columns():Add("FirstName"):Visible := .F.
		oGrid:Columns():Add("Handler"):Visible := .F.
		oColumn := oGrid:Columns():Add("Title")
			oColumn:Visible := .F.
			oColumn:DisplayFilterButton := .T.
		oColumn1 := oGrid:Columns():Add("TitleOfCourtesy")
			oColumn1:Visible := .F.
			oColumn1:DisplayFilterButton := .T.
		oGrid:Columns():Add("BirthDate"):Visible := .F.
		oGrid:Columns():Add("HideDate"):Visible := .F.
		oGrid:Columns():Add("Address"):Visible := .F.
		oGrid:Columns():Add("City"):Visible := .F.
		oGrid:Columns():Add("Region"):Visible := .F.
		oGrid:Columns():Add("PostCode"):Visible := .F.
		oGrid:Columns():Add("Country"):Visible := .F.
		oGrid:Columns():Add("HomePage"):Visible := .F.
		oGrid:Columns():Add("Extension"):Visible := .F.
		oGrid:Columns():Add("Photo"):Visible := .F.
		oGrid:Columns():Add("Notes"):Visible := .F.
		oGrid:Columns():Add("ReportsTo"):Visible := .F.
		oColumn2 := oGrid:Columns():Add("Personal Info")
			oColumn2:FormatLevel := "18;18/(15:54,(2/1/4))"
			oColumn2:Width := 196
		oColumn3 := oGrid:Columns():Add("General Info")
			oColumn3:FormatLevel := "18;19/((8/18;5):128,((((13/11/12),(6/7/10)),16)))"
			oColumn3:Width := 512

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
537
How can I select a cells like in excel

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGrid
	LOCAL oItems

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGrid := XbpActiveXControl():new( oForm:drawingArea )
	oGrid:CLSID  := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
	oGrid:create(,, {10,60},{610,370} )

		oGrid:MarkSearchColumn := .F.
		oGrid:SingleSel := .F.
		oGrid:FullRowSelect := 1/*exRectSel*/
		oGrid:Columns():Add("Column1"):Selected := .T.
		oGrid:Columns():Add("Column2")
		oGrid:Columns():Add("Column3"):Selected := .T.
		oItems := oGrid:Items()
			oItems:DefaultItem := oItems:AddItem(0)
			oItems:SetProperty("CellValue",0,1,1)
			oItems:SetProperty("CellValue",0,2,2)
			oItems:DefaultItem := oItems:AddItem(3)
			oItems:SetProperty("CellValue",0,1,4)
			oItems:SetProperty("CellValue",0,2,5)
			oItems:DefaultItem := oItems:AddItem(6)
			oItems:SetProperty("CellValue",0,1,7)
			oItems:SetProperty("CellValue",0,2,8)

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
536
How can I select a multiple column

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGrid
	LOCAL oItems

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGrid := XbpActiveXControl():new( oForm:drawingArea )
	oGrid:CLSID  := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
	oGrid:create(,, {10,60},{610,370} )

		oGrid:MarkSearchColumn := .F.
		oGrid:SingleSel := .F.
		oGrid:FullRowSelect := 1/*exRectSel*/
		oGrid:Columns():Add("Column1"):Selected := .T.
		oGrid:Columns():Add("Column2")
		oGrid:Columns():Add("Column3"):Selected := .T.
		oItems := oGrid:Items()
			oItems:DefaultItem := oItems:AddItem(0)
			oItems:SetProperty("CellValue",0,1,1)
			oItems:SetProperty("CellValue",0,2,2)
			oItems:DefaultItem := oItems:AddItem(3)
			oItems:SetProperty("CellValue",0,1,4)
			oItems:SetProperty("CellValue",0,2,5)
			oItems:DefaultItem := oItems:AddItem(6)
			oItems:SetProperty("CellValue",0,1,7)
			oItems:SetProperty("CellValue",0,2,8)
		oGrid:Items():SelectAll()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
535
How can I select a column

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGrid
	LOCAL oItems,oItems1

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGrid := XbpActiveXControl():new( oForm:drawingArea )
	oGrid:CLSID  := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
	oGrid:create(,, {10,60},{610,370} )

		oGrid:MarkSearchColumn := .F.
		oGrid:SingleSel := .F.
		oGrid:FullRowSelect := 1/*exRectSel*/
		oGrid:Columns():Add("Column1"):Selected := .T.
		oGrid:Columns():Add("Column2")
		oItems := oGrid:Items()
			oItems:SetProperty("CellValue",oItems:AddItem("One"),1,"One")
		oItems1 := oGrid:Items()
			oItems1:SetProperty("CellValue",oItems1:AddItem("Two"),1,"Two")
		oGrid:Items():SelectAll()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
534
How can I collapse all cards

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGrid
	LOCAL oItems

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGrid := XbpActiveXControl():new( oForm:drawingArea )
	oGrid:CLSID  := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
	oGrid:create(,, {10,60},{610,370} )

		oGrid:DrawGridLines := -1/*exAllLines*/
		oGrid:HeaderVisible := .F.
		oGrid:ViewMode := 1/*exCardView*/
		oGrid:SetProperty("ViewModeOption",1/*exCardView*/,4/*exCardViewFormat*/,"1")
		oGrid:SetProperty("ViewModeOption",1/*exCardView*/,3/*exCardViewHeight*/,64)
		oGrid:Columns():Add("Column 1")
		oGrid:Columns():Add("Column 2")
		oItems := oGrid:Items()
			oItems:SetProperty("CellValue",oItems:AddItem("Card 1"),1,"Expanded")
			oItems:SetProperty("CellValue",oItems:AddItem("Card 2"),1,"Card 1.2")
			oItems:SetProperty("CellValue",oItems:AddItem("Card 3"),1,"Card 1.3")
			oItems:CollapseAllCards()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
533
How can I expand all cards

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGrid
	LOCAL oItems

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGrid := XbpActiveXControl():new( oForm:drawingArea )
	oGrid:CLSID  := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
	oGrid:create(,, {10,60},{610,370} )

		oGrid:DrawGridLines := -1/*exAllLines*/
		oGrid:HeaderVisible := .F.
		oGrid:ViewMode := 1/*exCardView*/
		oGrid:SetProperty("ViewModeOption",1/*exCardView*/,4/*exCardViewFormat*/,"1")
		oGrid:SetProperty("ViewModeOption",1/*exCardView*/,3/*exCardViewHeight*/,64)
		oGrid:Columns():Add("Column 1")
		oGrid:Columns():Add("Column 2")
		oItems := oGrid:Items()
			oItems:SetProperty("CellValue",oItems:AddItem("Card 1"),1,"Expanded")
			oItems:SetProperty("CellValue",oItems:AddItem("Card 2"),1,"Card 1.2")
			oItems:SetProperty("CellValue",oItems:AddItem("Card 3"),1,"Card 1.3")
			oItems:ExpandAllCards()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
532
How can I expand or collapse a card

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGrid
	LOCAL oItems

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGrid := XbpActiveXControl():new( oForm:drawingArea )
	oGrid:CLSID  := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
	oGrid:create(,, {10,60},{610,370} )

		oGrid:DrawGridLines := -1/*exAllLines*/
		oGrid:HeaderVisible := .F.
		oGrid:ViewMode := 1/*exCardView*/
		oGrid:SetProperty("ViewModeOption",1/*exCardView*/,4/*exCardViewFormat*/,"1")
		oGrid:SetProperty("ViewModeOption",1/*exCardView*/,3/*exCardViewHeight*/,64)
		oGrid:Columns():Add("Column 1")
		oGrid:Columns():Add("Column 2")
		oItems := oGrid:Items()
			oItems:SetProperty("CellValue",oItems:AddItem("Card 1"),1,"Expanded")
			oItems:SetProperty("CellValue",oItems:AddItem("Card 2"),1,"Card 1.2")
			oItems:SetProperty("CellValue",oItems:AddItem("Card 3"),1,"Card 1.3")
			oItems:SetProperty("ExpandCard",oItems:FocusItem(),.T.)

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
531
How can I format or arrange the data being displayed in the card

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGrid
	LOCAL oItems

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGrid := XbpActiveXControl():new( oForm:drawingArea )
	oGrid:CLSID  := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
	oGrid:create(,, {10,60},{610,370} )

		oGrid:HasButtons := 0/*exNoButtons*/
		oGrid:DrawGridLines := -1/*exAllLines*/
		oGrid:HeaderVisible := .F.
		oGrid:ItemsAllowSizing := -1/*exResizeItem*/
		oGrid:ViewMode := 1/*exCardView*/
		oGrid:SetProperty("ViewModeOption",1/*exCardView*/,5/*exCardViewTitleFormat*/,"(" + CHR(34) + "Title:" + CHR(34) + ",0),1")
		oGrid:SetProperty("ViewModeOption",1/*exCardView*/,4/*exCardViewFormat*/,"")
		oGrid:SetProperty("ViewModeOption",1/*exCardView*/,2/*exCardViewWidth*/,164)
		oGrid:SetProperty("ViewModeOption",1/*exCardView*/,3/*exCardViewHeight*/,18)
		oGrid:Columns():Add("Column 1")
		oGrid:Columns():Add("Column 2")
		oItems := oGrid:Items()
			oItems:SetProperty("CellValue",oItems:AddItem("Card 1"),1,"Card 1.1")
			oItems:SetProperty("CellValue",oItems:AddItem("Card 2"),1,"Card 1.2")
			oItems:SetProperty("CellValue",oItems:AddItem("Card 3"),1,"Card 1.3")
			oItems:SetProperty("ExpandCard",oItems:FocusItem(),.T.)

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
530
How can I format or arrange the data being displayed in the card

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGrid
	LOCAL oItems

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGrid := XbpActiveXControl():new( oForm:drawingArea )
	oGrid:CLSID  := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
	oGrid:create(,, {10,60},{610,370} )

		oGrid:DrawGridLines := -1/*exAllLines*/
		oGrid:HeaderVisible := .F.
		oGrid:ItemsAllowSizing := -1/*exResizeItem*/
		oGrid:ViewMode := 1/*exCardView*/
		oGrid:SetProperty("ViewModeOption",1/*exCardView*/,4/*exCardViewFormat*/,"(" + CHR(34) + "ABC" + CHR(34) + ",2)/(0,3," + CHR(34) + "DEFGH" + CHR(34) + ")/1/0/1/0/1/1,0[bg=RGB(230,230,230)][fg=RGB(255,0,0)")
		oGrid:SetProperty("ViewModeOption",1/*exCardView*/,5/*exCardViewTitleFormat*/,"")
		oGrid:Columns():Add("Column 1")
		oGrid:Columns():Add("Column 2")
		oItems := oGrid:Items()
			oItems:SetProperty("CellValue",oItems:AddItem("Card 1"),1,"Card 1.1")
			oItems:SetProperty("CellValue",oItems:AddItem("Card 2"),1,"Card 1.2")
			oItems:SetProperty("CellValue",oItems:AddItem("Card 3"),1,"Card 1.3")
			oItems:SetProperty("ExpandCard",oItems:FocusItem(),.T.)

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
529
How can I hide the tilte for the cards

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGrid
	LOCAL oItems

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGrid := XbpActiveXControl():new( oForm:drawingArea )
	oGrid:CLSID  := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
	oGrid:create(,, {10,60},{610,370} )

		oGrid:DrawGridLines := -1/*exAllLines*/
		oGrid:HeaderVisible := .F.
		oGrid:ItemsAllowSizing := -1/*exResizeItem*/
		oGrid:ViewMode := 1/*exCardView*/
		oGrid:SetProperty("ViewModeOption",1/*exCardView*/,4/*exCardViewFormat*/,"0/1/0/1/0/1/0/1,0")
		oGrid:SetProperty("ViewModeOption",1/*exCardView*/,5/*exCardViewTitleFormat*/,"")
		oGrid:Columns():Add("Column 1")
		oGrid:Columns():Add("Column 2")
		oItems := oGrid:Items()
			oItems:SetProperty("CellValue",oItems:AddItem("Card 1"),1,"Card 1.1")
			oItems:SetProperty("CellValue",oItems:AddItem("Card 2"),1,"Card 1.2")
			oItems:SetProperty("CellValue",oItems:AddItem("Card 3"),1,"Card 1.3")
			oItems:SetProperty("ExpandCard",oItems:FocusItem(),.T.)

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
528
How can I display resizing lines between cards

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGrid
	LOCAL oItems

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGrid := XbpActiveXControl():new( oForm:drawingArea )
	oGrid:CLSID  := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
	oGrid:create(,, {10,60},{610,370} )

		oGrid:DrawGridLines := -1/*exAllLines*/
		oGrid:HeaderVisible := .F.
		oGrid:ItemsAllowSizing := -1/*exResizeItem*/
		oGrid:ViewMode := 1/*exCardView*/
		oGrid:SetProperty("ViewModeOption",1/*exCardView*/,4/*exCardViewFormat*/,"1")
		oGrid:SetProperty("ViewModeOption",1/*exCardView*/,3/*exCardViewHeight*/,36)
		oGrid:SetProperty("ViewModeOption",1/*exCardView*/,14/*exCardViewVResizeLine*/,.T.)
		oGrid:SetProperty("ViewModeOption",1/*exCardView*/,15/*exCardViewHResizeLine*/,.T.)
		oGrid:SetProperty("ViewModeOption",1/*exCardView*/,9/*exCardViewBorderWidth*/,8)
		oGrid:SetProperty("ViewModeOption",1/*exCardView*/,10/*exCardViewBorderHeight*/,8)
		oGrid:Columns():Add("Column 1")
		oGrid:Columns():Add("Column 2")
		oItems := oGrid:Items()
			oItems:SetProperty("CellValue",oItems:AddItem("Card 1"),1,"Card 1.1")
			oItems:SetProperty("CellValue",oItems:AddItem("Card 2"),1,"Card 1.2")
			oItems:SetProperty("CellValue",oItems:AddItem("Card 3"),1,"Card 1.3")
			oItems:SetProperty("ExpandCard",oItems:FocusItem(),.T.)

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
527
How can edit the text in the card

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGrid
	LOCAL oItems

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGrid := XbpActiveXControl():new( oForm:drawingArea )
	oGrid:CLSID  := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
	oGrid:create(,, {10,60},{610,370} )

		oGrid:DrawGridLines := -1/*exAllLines*/
		oGrid:HeaderVisible := .F.
		oGrid:ViewMode := 1/*exCardView*/
		oGrid:SetProperty("ViewModeOption",1/*exCardView*/,4/*exCardViewFormat*/,"1")
		oGrid:SetProperty("ViewModeOption",1/*exCardView*/,3/*exCardViewHeight*/,64)
		oGrid:Columns():Add("Column 1"):Editor():EditType := 1/*EditType*/
		oGrid:Columns():Add("Column 2"):Editor():EditType := 1/*EditType*/
		oItems := oGrid:Items()
			oItems:SetProperty("CellValue",oItems:AddItem("Card 1"),1,"Card 1.1")
			oItems:SetProperty("CellValue",oItems:AddItem("Card 2"),1,"Card 1.2")
			oItems:SetProperty("CellValue",oItems:AddItem("Card 3"),1,"Card 1.3")
			oItems:SetProperty("ExpandCard",oItems:FocusItem(),.T.)

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
526
How can I change the height of the card

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGrid
	LOCAL oItems

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGrid := XbpActiveXControl():new( oForm:drawingArea )
	oGrid:CLSID  := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
	oGrid:create(,, {10,60},{610,370} )

		oGrid:DrawGridLines := -1/*exAllLines*/
		oGrid:HeaderVisible := .F.
		oGrid:ViewMode := 1/*exCardView*/
		oGrid:SetProperty("ViewModeOption",1/*exCardView*/,4/*exCardViewFormat*/,"1")
		oGrid:SetProperty("ViewModeOption",1/*exCardView*/,3/*exCardViewHeight*/,64)
		oGrid:Columns():Add("Column 1")
		oGrid:Columns():Add("Column 2")
		oItems := oGrid:Items()
			oItems:SetProperty("CellValue",oItems:AddItem("Card 1"),1,"Card 1.1")
			oItems:SetProperty("CellValue",oItems:AddItem("Card 2"),1,"Card 1.2")
			oItems:SetProperty("CellValue",oItems:AddItem("Card 3"),1,"Card 1.3")
			oItems:SetProperty("ExpandCard",oItems:FocusItem(),.T.)

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
525
How can I display the cards from top to bottom

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGrid
	LOCAL oItems

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGrid := XbpActiveXControl():new( oForm:drawingArea )
	oGrid:CLSID  := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
	oGrid:create(,, {10,60},{610,370} )

		oGrid:DrawGridLines := -1/*exAllLines*/
		oGrid:HeaderVisible := .F.
		oGrid:ViewMode := 1/*exCardView*/
		oGrid:SetProperty("ViewModeOption",1/*exCardView*/,4/*exCardViewFormat*/,"1")
		oGrid:SetProperty("ViewModeOption",1/*exCardView*/,3/*exCardViewHeight*/,36)
		oGrid:SetProperty("ViewModeOption",1/*exCardView*/,11/*exCardViewLeftToRight*/,.F.)
		oGrid:Columns():Add("Column 1")
		oGrid:Columns():Add("Column 2")
		oItems := oGrid:Items()
			oItems:SetProperty("CellValue",oItems:AddItem("Card 1"),1,"Card 1.1")
			oItems:SetProperty("CellValue",oItems:AddItem("Card 2"),1,"Card 1.2")
			oItems:SetProperty("CellValue",oItems:AddItem("Card 3"),1,"Card 1.3")
			oItems:SetProperty("ExpandCard",oItems:FocusItem(),.T.)

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
524
How do I change the background color for a specified card

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGrid
	LOCAL oItems

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGrid := XbpActiveXControl():new( oForm:drawingArea )
	oGrid:CLSID  := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
	oGrid:create(,, {10,60},{610,370} )

		oGrid:DrawGridLines := -1/*exAllLines*/
		oGrid:HeaderVisible := .F.
		oGrid:ViewMode := 1/*exCardView*/
		oGrid:SetProperty("ViewModeOption",1/*exCardView*/,4/*exCardViewFormat*/,"1")
		oGrid:SetProperty("ViewModeOption",1/*exCardView*/,3/*exCardViewHeight*/,36)
		oGrid:Columns():Add("Column 1")
		oGrid:Columns():Add("Column 2")
		oItems := oGrid:Items()
			oItems:SetProperty("CellValue",oItems:AddItem("Card 1"),1,"Card 1.1")
			oItems:SetProperty("CellValue",oItems:AddItem("Card 2"),1,"Card 1.2")
			oItems:SetProperty("CellValue",oItems:AddItem("Card 3"),1,"Card 1.3")
			oItems:SetProperty("ExpandCard",oItems:FocusItem(),.T.)
			oItems:SetProperty("ItemForeColor",oItems:FocusItem(),AutomationTranslateColor( GraMakeRGBColor  ( { 255,0,0 } )  , .F. ))

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
523
How do I change the visual aspect for a specified card

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGrid
	LOCAL oItems

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGrid := XbpActiveXControl():new( oForm:drawingArea )
	oGrid:CLSID  := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
	oGrid:create(,, {10,60},{610,370} )

		oGrid:VisualAppearance():Add(1,"c:\exontrol\images\normal.ebn")
		oGrid:DrawGridLines := -1/*exAllLines*/
		oGrid:HeaderVisible := .F.
		oGrid:ViewMode := 1/*exCardView*/
		oGrid:SetProperty("ViewModeOption",1/*exCardView*/,4/*exCardViewFormat*/,"1")
		oGrid:SetProperty("ViewModeOption",1/*exCardView*/,3/*exCardViewHeight*/,36)
		oGrid:Columns():Add("Column 1")
		oGrid:Columns():Add("Column 2")
		oItems := oGrid:Items()
			oItems:SetProperty("CellValue",oItems:AddItem("Card 1"),1,"Card 1.1")
			oItems:SetProperty("CellValue",oItems:AddItem("Card 2"),1,"Card 1.2")
			oItems:SetProperty("CellValue",oItems:AddItem("Card 3"),1,"Card 1.3")
			oItems:SetProperty("ExpandCard",oItems:FocusItem(),.T.)
			oItems:SetProperty("ItemBackColor",oItems:FocusItem(),0x1000000)

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
522
How do I change the background color for a specified card

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGrid
	LOCAL oItems

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGrid := XbpActiveXControl():new( oForm:drawingArea )
	oGrid:CLSID  := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
	oGrid:create(,, {10,60},{610,370} )

		oGrid:DrawGridLines := -1/*exAllLines*/
		oGrid:HeaderVisible := .F.
		oGrid:ViewMode := 1/*exCardView*/
		oGrid:SetProperty("ViewModeOption",1/*exCardView*/,4/*exCardViewFormat*/,"1")
		oGrid:SetProperty("ViewModeOption",1/*exCardView*/,3/*exCardViewHeight*/,36)
		oGrid:Columns():Add("Column 1")
		oGrid:Columns():Add("Column 2")
		oItems := oGrid:Items()
			oItems:SetProperty("CellValue",oItems:AddItem("Card 1"),1,"Card 1.1")
			oItems:SetProperty("CellValue",oItems:AddItem("Card 2"),1,"Card 1.2")
			oItems:SetProperty("CellValue",oItems:AddItem("Card 3"),1,"Card 1.3")
			oItems:SetProperty("ExpandCard",oItems:FocusItem(),.T.)
			oItems:SetProperty("ItemBackColor",oItems:FocusItem(),AutomationTranslateColor( GraMakeRGBColor  ( { 255,0,0 } )  , .F. ))

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
521
Is there any way to specify the foreground color for the title of the cards

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGrid
	LOCAL oItems

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGrid := XbpActiveXControl():new( oForm:drawingArea )
	oGrid:CLSID  := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
	oGrid:create(,, {10,60},{610,370} )

		oGrid:DrawGridLines := -1/*exAllLines*/
		oGrid:HeaderVisible := .F.
		oGrid:ViewMode := 1/*exCardView*/
		oGrid:SetProperty("ViewModeOption",1/*exCardView*/,4/*exCardViewFormat*/,"1")
		oGrid:SetProperty("ViewModeOption",1/*exCardView*/,3/*exCardViewHeight*/,36)
		oGrid:SetProperty("ViewModeOption",1/*exCardView*/,7/*exCardViewTitleForeColor*/,255)
		oGrid:Columns():Add("Column 1")
		oGrid:Columns():Add("Column 2")
		oItems := oGrid:Items()
			oItems:SetProperty("CellValue",oItems:AddItem("Card 1"),1,"Card 1.1")
			oItems:SetProperty("CellValue",oItems:AddItem("Card 2"),1,"Card 1.2")
			oItems:SetProperty("CellValue",oItems:AddItem("Card 3"),1,"Card 1.3")
			oItems:SetProperty("ExpandCard",oItems:FocusItem(),.T.)

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
520
Is there any way to specify the foreground color for all cards, including its title

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGrid
	LOCAL oItems

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGrid := XbpActiveXControl():new( oForm:drawingArea )
	oGrid:CLSID  := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
	oGrid:create(,, {10,60},{610,370} )

		oGrid:SetProperty("ForeColor",AutomationTranslateColor( GraMakeRGBColor  ( { 255,0,0 } )  , .F. ))
		oGrid:DrawGridLines := -1/*exAllLines*/
		oGrid:HeaderVisible := .F.
		oGrid:ViewMode := 1/*exCardView*/
		oGrid:SetProperty("ViewModeOption",1/*exCardView*/,4/*exCardViewFormat*/,"1")
		oGrid:SetProperty("ViewModeOption",1/*exCardView*/,3/*exCardViewHeight*/,36)
		oGrid:Columns():Add("Column 1")
		oGrid:Columns():Add("Column 2")
		oItems := oGrid:Items()
			oItems:SetProperty("CellValue",oItems:AddItem("Card 1"),1,"Card 1.1")
			oItems:SetProperty("CellValue",oItems:AddItem("Card 2"),1,"Card 1.2")
			oItems:SetProperty("CellValue",oItems:AddItem("Card 3"),1,"Card 1.3")
			oItems:SetProperty("ExpandCard",oItems:FocusItem(),.T.)

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
519
How can I change the visual appearance for all cards, including the title

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGrid
	LOCAL oItems

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGrid := XbpActiveXControl():new( oForm:drawingArea )
	oGrid:CLSID  := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
	oGrid:create(,, {10,60},{610,370} )

		oGrid:VisualAppearance():Add(1,"c:\exontrol\images\normal.ebn")
		oGrid:VisualAppearance():Add(2,"c:\exontrol\images\pushed.ebn")
		oGrid:DrawGridLines := -1/*exAllLines*/
		oGrid:HeaderVisible := .F.
		oGrid:ViewMode := 1/*exCardView*/
		oGrid:SetProperty("ViewModeOption",1/*exCardView*/,4/*exCardViewFormat*/,"1")
		oGrid:SetProperty("ViewModeOption",1/*exCardView*/,3/*exCardViewHeight*/,36)
		oGrid:SetProperty("ViewModeOption",1/*exCardView*/,8/*exCardViewBackColor*/,16777216)
		oGrid:SetProperty("ViewModeOption",1/*exCardView*/,6/*exCardViewTitleBackColor*/,33554432)
		oGrid:Columns():Add("Column 1")
		oGrid:Columns():Add("Column 2")
		oItems := oGrid:Items()
			oItems:SetProperty("CellValue",oItems:AddItem("Card 1"),1,"Card 1.1")
			oItems:SetProperty("CellValue",oItems:AddItem("Card 2"),1,"Card 1.2")
			oItems:SetProperty("CellValue",oItems:AddItem("Card 3"),1,"Card 1.3")
			oItems:SetProperty("ExpandCard",oItems:FocusItem(),.T.)

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
518
Is there any way to specify the background color for all cards, including its title

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGrid
	LOCAL oItems

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGrid := XbpActiveXControl():new( oForm:drawingArea )
	oGrid:CLSID  := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
	oGrid:create(,, {10,60},{610,370} )

		oGrid:DrawGridLines := -1/*exAllLines*/
		oGrid:HeaderVisible := .F.
		oGrid:ViewMode := 1/*exCardView*/
		oGrid:SetProperty("ViewModeOption",1/*exCardView*/,4/*exCardViewFormat*/,"1")
		oGrid:SetProperty("ViewModeOption",1/*exCardView*/,3/*exCardViewHeight*/,36)
		oGrid:SetProperty("ViewModeOption",1/*exCardView*/,8/*exCardViewBackColor*/,255)
		oGrid:SetProperty("ViewModeOption",1/*exCardView*/,6/*exCardViewTitleBackColor*/,128)
		oGrid:Columns():Add("Column 1")
		oGrid:Columns():Add("Column 2")
		oItems := oGrid:Items()
			oItems:SetProperty("CellValue",oItems:AddItem("Card 1"),1,"Card 1.1")
			oItems:SetProperty("CellValue",oItems:AddItem("Card 2"),1,"Card 1.2")
			oItems:SetProperty("CellValue",oItems:AddItem("Card 3"),1,"Card 1.3")
			oItems:SetProperty("ExpandCard",oItems:FocusItem(),.T.)

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
517
Is there any way to specify the background color for all cards

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGrid
	LOCAL oItems

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGrid := XbpActiveXControl():new( oForm:drawingArea )
	oGrid:CLSID  := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
	oGrid:create(,, {10,60},{610,370} )

		oGrid:DrawGridLines := -1/*exAllLines*/
		oGrid:HeaderVisible := .F.
		oGrid:ViewMode := 1/*exCardView*/
		oGrid:SetProperty("ViewModeOption",1/*exCardView*/,4/*exCardViewFormat*/,"1")
		oGrid:SetProperty("ViewModeOption",1/*exCardView*/,3/*exCardViewHeight*/,36)
		oGrid:SetProperty("ViewModeOption",1/*exCardView*/,8/*exCardViewBackColor*/,255)
		oGrid:Columns():Add("Column 1")
		oGrid:Columns():Add("Column 2")
		oItems := oGrid:Items()
			oItems:SetProperty("CellValue",oItems:AddItem("Card 1"),1,"Card 1.1")
			oItems:SetProperty("CellValue",oItems:AddItem("Card 2"),1,"Card 1.2")
			oItems:SetProperty("CellValue",oItems:AddItem("Card 3"),1,"Card 1.3")
			oItems:SetProperty("ExpandCard",oItems:FocusItem(),.T.)

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
516
How can I specify the distance between cards

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGrid
	LOCAL oItems

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGrid := XbpActiveXControl():new( oForm:drawingArea )
	oGrid:CLSID  := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
	oGrid:create(,, {10,60},{610,370} )

		oGrid:DrawGridLines := -1/*exAllLines*/
		oGrid:HeaderVisible := .F.
		oGrid:ViewMode := 1/*exCardView*/
		oGrid:SetProperty("ViewModeOption",1/*exCardView*/,4/*exCardViewFormat*/,"1")
		oGrid:SetProperty("ViewModeOption",1/*exCardView*/,3/*exCardViewHeight*/,36)
		oGrid:SetProperty("ViewModeOption",1/*exCardView*/,9/*exCardViewBorderWidth*/,16)
		oGrid:SetProperty("ViewModeOption",1/*exCardView*/,10/*exCardViewBorderHeight*/,16)
		oGrid:Columns():Add("Column 1")
		oGrid:Columns():Add("Column 2")
		oItems := oGrid:Items()
			oItems:SetProperty("CellValue",oItems:AddItem("Card 1"),1,"Card 1.1")
			oItems:SetProperty("CellValue",oItems:AddItem("Card 2"),1,"Card 1.2")
			oItems:SetProperty("CellValue",oItems:AddItem("Card 3"),1,"Card 1.3")
			oItems:SetProperty("ExpandCard",oItems:FocusItem(),.T.)

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
515
How can I resize the cards at runtime

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGrid
	LOCAL oItems

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGrid := XbpActiveXControl():new( oForm:drawingArea )
	oGrid:CLSID  := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
	oGrid:create(,, {10,60},{610,370} )

		oGrid:DrawGridLines := -1/*exAllLines*/
		oGrid:HeaderVisible := .F.
		oGrid:ItemsAllowSizing := -1/*exResizeItem*/
		oGrid:ViewMode := 1/*exCardView*/
		oGrid:SetProperty("ViewModeOption",1/*exCardView*/,4/*exCardViewFormat*/,"1")
		oGrid:SetProperty("ViewModeOption",1/*exCardView*/,3/*exCardViewHeight*/,36)
		oGrid:SetProperty("ViewModeOption",1/*exCardView*/,14/*exCardViewVResizeLine*/,.T.)
		oGrid:SetProperty("ViewModeOption",1/*exCardView*/,15/*exCardViewHResizeLine*/,.T.)
		oGrid:SetProperty("ViewModeOption",1/*exCardView*/,9/*exCardViewBorderWidth*/,8)
		oGrid:SetProperty("ViewModeOption",1/*exCardView*/,10/*exCardViewBorderHeight*/,8)
		oGrid:Columns():Add("Column 1")
		oGrid:Columns():Add("Column 2")
		oItems := oGrid:Items()
			oItems:SetProperty("CellValue",oItems:AddItem("Card 1"),1,"Card 1.1")
			oItems:SetProperty("CellValue",oItems:AddItem("Card 2"),1,"Card 1.2")
			oItems:SetProperty("CellValue",oItems:AddItem("Card 3"),1,"Card 1.3")
			oItems:SetProperty("ExpandCard",oItems:FocusItem(),.T.)

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
514
How can show the grid lines for my cards

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGrid
	LOCAL oItems

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGrid := XbpActiveXControl():new( oForm:drawingArea )
	oGrid:CLSID  := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
	oGrid:create(,, {10,60},{610,370} )

		oGrid:DrawGridLines := -1/*exAllLines*/
		oGrid:HeaderVisible := .F.
		oGrid:ViewMode := 1/*exCardView*/
		oGrid:SetProperty("ViewModeOption",1/*exCardView*/,4/*exCardViewFormat*/,"1")
		oGrid:SetProperty("ViewModeOption",1/*exCardView*/,3/*exCardViewHeight*/,36)
		oGrid:Columns():Add("Column 1")
		oGrid:Columns():Add("Column 2")
		oItems := oGrid:Items()
			oItems:SetProperty("CellValue",oItems:AddItem("Card 1"),1,"Card 1.1")
			oItems:SetProperty("CellValue",oItems:AddItem("Card 2"),1,"Card 1.2")
			oItems:SetProperty("CellValue",oItems:AddItem("Card 3"),1,"Card 1.3")

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
513
How can I hide the +/- expanding / collapsing buttons in the cards

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGrid
	LOCAL oItems

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGrid := XbpActiveXControl():new( oForm:drawingArea )
	oGrid:CLSID  := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
	oGrid:create(,, {10,60},{610,370} )

		oGrid:ExpandOnDblClick := .F.
		oGrid:DrawGridLines := -1/*exAllLines*/
		oGrid:HeaderVisible := .F.
		oGrid:ViewMode := 1/*exCardView*/
		oGrid:SetProperty("ViewModeOption",1/*exCardView*/,4/*exCardViewFormat*/,"1")
		oGrid:SetProperty("ViewModeOption",1/*exCardView*/,3/*exCardViewHeight*/,36)
		oGrid:Columns():Add("Column 1")
		oGrid:Columns():Add("Column 2")
		oItems := oGrid:Items()
			oItems:SetProperty("CellValue",oItems:AddItem("Card 1"),1,"Card 1.1")
			oItems:SetProperty("CellValue",oItems:AddItem("Card 2"),1,"Card 1.2")
			oItems:SetProperty("CellValue",oItems:AddItem("Card 3"),1,"Card 1.3")

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
512
How can I hide the +/- expanding / collapsing buttons in the cards

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGrid
	LOCAL oItems

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGrid := XbpActiveXControl():new( oForm:drawingArea )
	oGrid:CLSID  := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
	oGrid:create(,, {10,60},{610,370} )

		oGrid:HasButtons := 0/*exNoButtons*/
		oGrid:DrawGridLines := -1/*exAllLines*/
		oGrid:HeaderVisible := .F.
		oGrid:ViewMode := 1/*exCardView*/
		oGrid:SetProperty("ViewModeOption",1/*exCardView*/,4/*exCardViewFormat*/,"1")
		oGrid:SetProperty("ViewModeOption",1/*exCardView*/,3/*exCardViewHeight*/,36)
		oGrid:Columns():Add("Column 1")
		oGrid:Columns():Add("Column 2")
		oItems := oGrid:Items()
			oItems:SetProperty("CellValue",oItems:AddItem("Card 1"),1,"Card 1.1")
			oItems:SetProperty("CellValue",oItems:AddItem("Card 2"),1,"Card 1.2")
			oItems:SetProperty("CellValue",oItems:AddItem("Card 3"),1,"Card 1.3")

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
511
Is there any way to to specify the number of cards being displayed from letf to right

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGrid
	LOCAL oItems

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGrid := XbpActiveXControl():new( oForm:drawingArea )
	oGrid:CLSID  := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
	oGrid:create(,, {10,60},{610,370} )

		oGrid:DrawGridLines := -1/*exAllLines*/
		oGrid:HeaderVisible := .F.
		oGrid:ViewMode := 1/*exCardView*/
		oGrid:SetProperty("ViewModeOption",1/*exCardView*/,4/*exCardViewFormat*/,"1")
		oGrid:SetProperty("ViewModeOption",1/*exCardView*/,3/*exCardViewHeight*/,36)
		oGrid:SetProperty("ViewModeOption",1/*exCardView*/,12/*exCardViewColumns*/,3)
		oGrid:Columns():Add("Column 1")
		oGrid:Columns():Add("Column 2")
		oItems := oGrid:Items()
			oItems:SetProperty("CellValue",oItems:AddItem("Card 1"),1,"Card 1.1")
			oItems:SetProperty("CellValue",oItems:AddItem("Card 2"),1,"Card 1.2")
			oItems:SetProperty("CellValue",oItems:AddItem("Card 3"),1,"Card 1.3")

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
510
Is there any way to to specify the width of the cards, so they fit the control's client area

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGrid
	LOCAL oItems

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGrid := XbpActiveXControl():new( oForm:drawingArea )
	oGrid:CLSID  := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
	oGrid:create(,, {10,60},{610,370} )

		oGrid:DrawGridLines := -1/*exAllLines*/
		oGrid:HeaderVisible := .F.
		oGrid:ViewMode := 1/*exCardView*/
		oGrid:SetProperty("ViewModeOption",1/*exCardView*/,4/*exCardViewFormat*/,"1")
		oGrid:SetProperty("ViewModeOption",1/*exCardView*/,2/*exCardViewWidth*/,0)
		oGrid:SetProperty("ViewModeOption",1/*exCardView*/,3/*exCardViewHeight*/,36)
		oGrid:SetProperty("ViewModeOption",1/*exCardView*/,12/*exCardViewColumns*/,2)
		oGrid:Columns():Add("Column 1")
		oGrid:Columns():Add("Column 2")
		oItems := oGrid:Items()
			oItems:SetProperty("CellValue",oItems:AddItem("Card 1"),1,"Card 1.1")
			oItems:SetProperty("CellValue",oItems:AddItem("Card 2"),1,"Card 1.2")
			oItems:SetProperty("CellValue",oItems:AddItem("Card 3"),1,"Card 1.3")

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
509
Is there any way to to specify the width of the cards, so they fit the control's client area

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGrid
	LOCAL oItems

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGrid := XbpActiveXControl():new( oForm:drawingArea )
	oGrid:CLSID  := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
	oGrid:create(,, {10,60},{610,370} )

		oGrid:DrawGridLines := -1/*exAllLines*/
		oGrid:HeaderVisible := .F.
		oGrid:ViewMode := 1/*exCardView*/
		oGrid:SetProperty("ViewModeOption",1/*exCardView*/,4/*exCardViewFormat*/,"1")
		oGrid:SetProperty("ViewModeOption",1/*exCardView*/,2/*exCardViewWidth*/,0)
		oGrid:SetProperty("ViewModeOption",1/*exCardView*/,3/*exCardViewHeight*/,36)
		oGrid:Columns():Add("Column 1")
		oGrid:Columns():Add("Column 2")
		oItems := oGrid:Items()
			oItems:SetProperty("CellValue",oItems:AddItem("Card 1"),1,"Card 1.1")
			oItems:SetProperty("CellValue",oItems:AddItem("Card 2"),1,"Card 1.2")
			oItems:SetProperty("CellValue",oItems:AddItem("Card 3"),1,"Card 1.3")

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
508
Is there any way to to specify the width of the cards

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGrid
	LOCAL oItems

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGrid := XbpActiveXControl():new( oForm:drawingArea )
	oGrid:CLSID  := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
	oGrid:create(,, {10,60},{610,370} )

		oGrid:DrawGridLines := -1/*exAllLines*/
		oGrid:HeaderVisible := .F.
		oGrid:ViewMode := 1/*exCardView*/
		oGrid:SetProperty("ViewModeOption",1/*exCardView*/,4/*exCardViewFormat*/,"1")
		oGrid:SetProperty("ViewModeOption",1/*exCardView*/,2/*exCardViewWidth*/,64)
		oGrid:SetProperty("ViewModeOption",1/*exCardView*/,3/*exCardViewHeight*/,36)
		oGrid:Columns():Add("Column 1")
		oGrid:Columns():Add("Column 2")
		oItems := oGrid:Items()
			oItems:SetProperty("CellValue",oItems:AddItem("Card 1"),1,"Card 1.1")
			oItems:SetProperty("CellValue",oItems:AddItem("Card 2"),1,"Card 1.2")
			oItems:SetProperty("CellValue",oItems:AddItem("Card 3"),1,"Card 1.3")

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
507
Is there any way to indent the control's data relative to the borders or the frame of the control

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGrid
	LOCAL oItems

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGrid := XbpActiveXControl():new( oForm:drawingArea )
	oGrid:CLSID  := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
	oGrid:create(,, {10,60},{610,370} )

		oGrid:DrawGridLines := -1/*exAllLines*/
		oGrid:HeaderVisible := .F.
		oGrid:ViewMode := 1/*exCardView*/
		oGrid:SetProperty("ViewModeOption",1/*exCardView*/,0/*exBorderWidth*/,8)
		oGrid:SetProperty("ViewModeOption",1/*exCardView*/,1/*exBorderHeight*/,8)
		oGrid:SetProperty("ViewModeOption",1/*exCardView*/,4/*exCardViewFormat*/,"1")
		oGrid:SetProperty("ViewModeOption",1/*exCardView*/,3/*exCardViewHeight*/,36)
		oGrid:Columns():Add("Column 1")
		oGrid:Columns():Add("Column 2")
		oItems := oGrid:Items()
			oItems:SetProperty("CellValue",oItems:AddItem("Card 1"),1,"Card 1.1")
			oItems:SetProperty("CellValue",oItems:AddItem("Card 2"),1,"Card 1.2")
			oItems:SetProperty("CellValue",oItems:AddItem("Card 3"),1,"Card 1.3")

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
506
Is there any way to indent the control's data relative to the borders or the frame of the control

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGrid
	LOCAL oItems

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGrid := XbpActiveXControl():new( oForm:drawingArea )
	oGrid:CLSID  := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
	oGrid:create(,, {10,60},{610,370} )

		oGrid:DrawGridLines := -1/*exAllLines*/
		oGrid:ViewMode := 0/*exTableView*/
		oGrid:SetProperty("ViewModeOption",0/*exTableView*/,0/*exBorderWidth*/,8)
		oGrid:SetProperty("ViewModeOption",0/*exTableView*/,1/*exBorderHeight*/,8)
		oGrid:Columns():Add("Column 1")
		oGrid:Columns():Add("Column 2")
		oItems := oGrid:Items()
			oItems:SetProperty("CellValue",oItems:AddItem("Item 1"),1,"Item 1.1")
			oItems:SetProperty("CellValue",oItems:AddItem("Item 2"),1,"Item 1.2")
			oItems:SetProperty("CellValue",oItems:AddItem("Item 3"),1,"Item 1.3")

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
505
How can I display my rows or items as a table

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGrid
	LOCAL oItems

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGrid := XbpActiveXControl():new( oForm:drawingArea )
	oGrid:CLSID  := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
	oGrid:create(,, {10,60},{610,370} )

		oGrid:DrawGridLines := -1/*exAllLines*/
		oGrid:ViewMode := 0/*exTableView*/
		oGrid:Columns():Add("Column 1")
		oGrid:Columns():Add("Column 2")
		oItems := oGrid:Items()
			oItems:SetProperty("CellValue",oItems:AddItem("Item 1"),1,"Item 1.1")
			oItems:SetProperty("CellValue",oItems:AddItem("Item 2"),1,"Item 1.2")
			oItems:SetProperty("CellValue",oItems:AddItem("Item 3"),1,"Item 1.3")

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
504
How can I display my rows as cards

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGrid
	LOCAL oItems

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGrid := XbpActiveXControl():new( oForm:drawingArea )
	oGrid:CLSID  := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
	oGrid:create(,, {10,60},{610,370} )

		oGrid:DrawGridLines := -1/*exAllLines*/
		oGrid:ViewMode := 1/*exCardView*/
		oGrid:SetProperty("ViewModeOption",1/*exCardView*/,4/*exCardViewFormat*/,"1")
		oGrid:SetProperty("ViewModeOption",1/*exCardView*/,3/*exCardViewHeight*/,36)
		oGrid:Columns():Add("Column 1")
		oGrid:Columns():Add("Column 2")
		oItems := oGrid:Items()
			oItems:SetProperty("CellValue",oItems:AddItem("Card 1"),1,"Card 1.1")
			oItems:SetProperty("CellValue",oItems:AddItem("Card 2"),1,"Card 1.2")
			oItems:SetProperty("CellValue",oItems:AddItem("Card 3"),1,"Card 1.3")

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
503
How can I avoid focusing a new cell, when user presses an arrow, page, home or end key, while the editor is opened

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGrid
	LOCAL oItems,oItems1

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGrid := XbpActiveXControl():new( oForm:drawingArea )
	oGrid:CLSID  := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
	oGrid:create(,, {10,60},{610,370} )

		oGrid:SetProperty("DefaultEditorOption",20/*exLeftArrow*/,0)
		oGrid:SetProperty("DefaultEditorOption",21/*exRightArrow*/,0)
		oGrid:SetProperty("DefaultEditorOption",22/*exUpArrow*/,0)
		oGrid:SetProperty("DefaultEditorOption",23/*exDownArrow*/,0)
		oGrid:SetProperty("DefaultEditorOption",24/*exHomeKey*/,0)
		oGrid:SetProperty("DefaultEditorOption",25/*exEndKey*/,0)
		oGrid:SetProperty("DefaultEditorOption",26/*exPageUpKey*/,0)
		oGrid:SetProperty("DefaultEditorOption",27/*exPageDownKey*/,0)
		oGrid:Columns():Add("Edit"):Editor():EditType := 1/*EditType*/
		oGrid:Columns():Add("Edit"):Editor():EditType := 1/*EditType*/
		oItems := oGrid:Items()
			oItems:SetProperty("CellValue",oItems:AddItem(0),1,1)
		oItems1 := oGrid:Items()
			oItems1:SetProperty("CellValue",oItems1:AddItem(2),1,3)

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
502
How can I expand predefined items in a drop down list editor as I type

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGrid
	LOCAL oColumn
	LOCAL oEditor
	LOCAL oItems

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGrid := XbpActiveXControl():new( oForm:drawingArea )
	oGrid:CLSID  := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
	oGrid:create(,, {10,60},{610,370} )

		oGrid:Images("gBJJgBAIDAAGAAEAAQhYAf8Pf4hh0QihCJo2AEZjQAjEZFEaIEaEEaAIAkcbk0olUrlktl0vmExmUzmk1m03nE5nU7nk9n0/oFBoVDolFo1HpFJpVLplNp1PqFRqVTqlVq1XrFZrVbrldr1fsFhsVjslls1ntFptVrtltt1vuFxuVzul1u13vF5vV7vl9v1/wGBwWDwmFw2HxGJxWLxmNx0xiFdyOTh8Tf9ZymXx+QytcyNgz8r0OblWjyWds+m0ka1Vf1ta1+r1mos2xrG2xeZ0+a0W0qOx3GO4NV3WeyvD2XJ5XL5nN51aiw+lfSj0gkUkAEllHanHI5j/cHg8EZf7w8vl8j4f/qfEZeB09/vjLAB30+kZQAP/P5/H6/yNAOAEAwCjMBwFAEDwJBMDwLBYAP2/8Hv8/gAGAD8LQs9w/nhDY/oygIA=")
		oColumn := oGrid:Columns():Add("DropDown")
			oColumn:SetProperty("Def",17/*exCellValueFormat*/,1)
			oEditor := oColumn:Editor()
				oEditor:SetProperty("Option",38/*exExpandOnSearch*/,.T.)
				oEditor:EditType := 3/*DropDownListType*/
				oEditor:DropDownAutoWidth := 0/*exDropDownEditorWidth*/
				oEditor:AddItem(1,"<b>CObject</b> class",1)
				oEditor:InsertItem(2,"<b>CCmdTarget</b> class",2,1)
				oEditor:InsertItem(3,"<b>CWnd</b> class",3,2)
				oEditor:InsertItem(6,"<bgcolor=10A0E0><fgcolor=F0F0F0>S y n c</fgcolor>",1,1)
				oEditor:AddItem(4,"Exceptions",1)
				oEditor:InsertItem(7,"<b>System</b> Exceptions",2,4)
				oEditor:AddItem(5,"File Services",2)
		oItems := oGrid:Items()
			oItems:AddItem(1)
			oItems:AddItem(2)

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
501
How can I add an extra button to a date picker editor

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGrid
	LOCAL oEditor
	LOCAL oItems

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGrid := XbpActiveXControl():new( oForm:drawingArea )
	oGrid:CLSID  := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
	oGrid:create(,, {10,60},{610,370} )

		oGrid:Images("gBJJgBAIDAAGAAEAAQhYAf8Pf4hh0QihCJo2AEZjQAjEZFEaIEaEEaAIAkcbk0olUrlktl0vmExmUzmk1m03nE5nU7nk9n0/oFBoVDolFo1HpFJpVLplNp1PqFRqVTqlVq1XrFZrVbrldr1fsFhsVjslls1ntFptVrtltt1vuFxuVzul1u13vF5vV7vl9v1/wGBwWDwmFw2HxGJxWLxmNx0xiFdyOTh8Tf9ZymXx+QytcyNgz8r0OblWjyWds+m0ka1Vf1ta1+r1mos2xrG2xeZ0+a0W0qOx3GO4NV3WeyvD2XJ5XL5nN51aiw+lfSj0gkUkAEllHanHI5j/cHg8EZf7w8vl8j4f/qfEZeB09/vjLAB30+kZQAP/P5/H6/yNAOAEAwCjMBwFAEDwJBMDwLBYAP2/8Hv8/gAGAD8LQs9w/nhDY/oygIA=")
		oGrid:DefaultItemHeight := 20
		oEditor := oGrid:Columns():Add("Date"):Editor()
			oEditor:EditType := 7/*DateType*/
			oEditor:AddButton("B1",2,1,"This is a bit of text that's shown when the cursor hovers the button B1")
			oEditor:ButtonWidth := 20
		oItems := oGrid:Items()
			oItems:AddItem(0)
			oItems:AddItem(1)

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN